Producer配置
- publisher-confirms, 实现一个监听器用于监听Broker端给我们返回的确认请求 : RabbitTemplate.ConfirmCallback
- publisher-returns, 保证消息对Broker端是可达的, 如果出现路由键不可达的情况, 则使用监听器对不可达的消息进行后续的处理, 保证消息的路由成功 : RabbitTemplate.ReturnCallback
- 注意 : 在发送消息时堆template进行配置mandatory=true, 保证监听有效
- 生产端还可以配置其他属性, 如发送重试, 超时时间, 重试次数, 间隔等
application.properties或application.yml文件中添加配置 :
spring.rabbitmq.addresses=192.168.72.138:5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
spring.rabbitmq.connection-timeout=15000
spring.rabbitmq.publisher-confirms=true
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.template.mandatory=true
创建生产者类, 添加ConfirmCallback,ReturnCallback :
package qiyexue.rabbitmq.producer;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 生产者
*
* @author 七夜雪
* @date 2018-12-24 20:30
*/
@Component
public class Producer {