RabbitMQ @RabbitListener注解和使用

本文详细介绍如何在Spring Boot项目中整合RabbitMQ,包括配置连接工厂、定义交换器、队列及监听器,实现消息的发布与订阅。通过代码示例展示了如何使用RabbitMQ进行消息传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<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;
	}

}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值