赞
踩
本文讲述rabbitmq高级特性confirm和return
提示:以下是本篇文章正文内容,下面案例可供参考
![在这里插入图
代码如下(示例):
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zy</groupId> <artifactId>rabbitmq-consumer-confirm-spring</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.3</version> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>2.3.4</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.3</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
rabbitmq.properties配置文件:
rabbitmq.host=127.0.0.1 //rabbitmq-server主机地址
rabbitmq.port=5672 //rabbitmq-server端口
rabbitmq.username=zysf01 //用户名
rabbitmq.password=zysf01 //密码
rabbitmq.virtual-host=/zysf //虚拟机
producer-confirm-spring.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd"> <!--加载配置文件--> <context:property-placeholder location="classpath:rabbitmq.properties"/> <!-- 定义rabbitmq connectionFactory --> <rabbit:connection-factory id="connectionFactory" host="${rabbitmq.host}" port="${rabbitmq.port}" username="${rabbitmq.username}" password="${rabbitmq.password}" virtual-host="${rabbitmq.virtual-host}" confirm-type="CORRELATED" /> <!--定义管理交换机、队列--> <rabbit:admin connection-factory="connectionFactory"/> <!--定义rabbitTemplate对象操作可以在代码中方便发送消息--> <rabbit:template id="rabbitTemplate" connection-factory="connectionFactory"/> <!--消息的可靠性投递(生产端)--> <rabbit:queue id="test_queue_confirm" name="test_queue_confirm"></rabbit:queue> <rabbit:direct-exchange name="test_exchange_confirm"> <rabbit:bindings> <rabbit:binding queue="test_queue_confirm" key="confirm"></rabbit:binding> </rabbit:bindings> </rabbit:direct-exchange> </beans>
1.接下来我们需要在配置文件rabbitmq-producer-confirm-spring.xml中激活confirm功能,在rabbit:connection-factory标签中添加confirm-type=“CORRELATED”,老版本添加publisher-confirms=“true”
2.给rabbitTemplate设置回调函数,并实现confirm方法
@Test public void testConfirm() { rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() { //confirm(CorrelationData correlationData, 发送消息时可以设置配置信息,这里就是那个信息 // boolean b, ack代表是否成功收到消息 // String s) cause代表失败的原因 @Override public void confirm(CorrelationData correlationData, boolean b, String s) { System.out.println("confirm方法被执行了..."); } }); //发送消息 rabbitTemplate.convertAndSend("test_exchange_confirm","confirm","message confirm..."); }
提示:
1.创建maven项目
2.在rabbitmq.properties配置文件中配置rabbitmq-server服务链接参数
3.在rabbitmq-producer-confirm-spring.xml配置文件中配置exchange和queue
4.接下来我们需要在配置文件rabbitmq-producer-confirm-spring.xml中激活confirm功能,在rabbit:connection-factory标签中添加confirm-type=“CORRELATED”,老版本添加publisher-confirms=“true”
5.给rabbitTemplate设置回调函数,并实现confirm方法
6.注意测试时需要引入rabbitmq-producer-confirm-spring.xml配置文件
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:rabbitmq-producer-confirm-spring.xml") public class ConfirmTest { @Autowired private RabbitTemplate rabbitTemplate; /** * 确认模式: * 1.确认模式开启:ConnectionFactory中开启publisher-confirms="true"|新版本中ConnectionFactory中开启confirm-type="CORRELATED" * 2.在rabbitTemplate中定义回调函数 * */ @Test public void testConfirm() { rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() { //confirm(CorrelationData correlationData, 发送消息时可以设置配置信息,这里就是那个信息 // boolean b, ack代表是否成功收到消息 // String s) cause代表失败的原因 @Override public void confirm(CorrelationData correlationData, boolean b, String s) { System.out.println("confirm方法被执行了..."); } }); //发送消息 rabbitTemplate.convertAndSend("test_exchange_confirm","confirm","message confirm..."); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。