<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit-1.4.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<!-- 定义RabbitMQ的连接工厂 -->
<rabbit:connection-factory id="connectionFactory"
host="${rabbitmq.host}" port="${rabbitmq.port}" username="${rabbitmq.username}"
password="${rabbitmq.password}" virtual-host="${rabbitmq.virtualhost}" />
<!-- 定义Rabbit模板,指定连接工厂以及定义exchange -->
<rabbit:template id="template" connection-factory="connectionFactory"
exchange="1688gzs.email" />
<!-- MQ的管理,包括队列、交换器等 -->
<rabbit:admin connection-factory="connectionFactory" />
<!-- 定义交换器,自动声明 -->
<rabbit:fanout-exchange name="1688gzs.email"
auto-declare="true" durable="true" />
<!--监听 onMessage方法 ,因为想该用注解方式所以注释掉
<rabbit:queue name="1688gzs.email1" auto-declare="true" durable="true"/>
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener ref="messagelisten" method="listen" queue-names="1688gzs.email1"/>
<rabbit:listener ref="messagelisten" method="listen" queue-names="1688gzs.email2"/>
</rabbit:listener-container>
<bean id="messagelisten" class="com.gzs.messages.controller.Messagelisten"/> -->
<!-- 必须要加,不然识别不了注解 json转换器,消息可以自动根据转换器转换格式,不配置时默认为java序列化,可以自行配置 -->
<bean id="messageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" />
<!-- 注解监听 必须要加 -->
<rabbit:annotation-driven />
<!-- 必须要加-->
<bean id="rabbitListenerContainerFactory"
class="org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory">
<property name="messageConverter" ref="messageConverter" />
<property name="connectionFactory" ref="connectionFactory" />
<property name="concurrentConsumers" value="3" />
<property name="maxConcurrentConsumers" value="10" />
</bean>
</beans>
消费者
//java代码 不需要和配置文件有任何关联
@Component //必须要加,不然注解@RabbitListener 无效
public class Mqlisten {
@RabbitListener(queues = "1688gzs.email1")
public void email1(Message message) throws UnsupportedEncodingException{
System.out.println(new String(message.getBody(),"utf-8"));
}
@RabbitListener(queues = "1688gzs.email2")
public void email2(Message message) throws UnsupportedEncodingException{
System.out.println(new String(message.getBody(),"utf-8"));
}
}
@RequestMapping(value = "phpmessage")
@Controller
public class PhpmessageController {
//利用spring整合的rabbitmq工具
@Resource(name = "template")
private AmqpTemplate template;
@RequestMapping(value = "demo")
public String demo() throws IOException {
//参数:交换机
//参数:通配符
//参数:内容
template.convertAndSend("1688gzs.email", "1688gzs.test", "你好");
return messageStr;
}
}
RabbitMQ @RabbitListener注解和使用
最新推荐文章于 2025-06-07 09:00:00 发布