routingKey);
});
return rabbitTemplate;
}
/**
-
确认发送消息是否成功(调用util方法)
-
@return
*/
@Bean
public MsgSendConfirmCallBack msgSendConfirmCallBack() {
return new MsgSendConfirmCallBack();
}
}
5.util类
发送是否成功的回调方法。
public class MsgSendConfirmCallBack implements RabbitTemplate.ConfirmCallback {
/**
-
回调方法
-
@param correlationData
-
@param ack
-
@param cause
*/
@Override
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
System.out.println(“MsgSendConfirmCallBack , 回调id:” + correlationData);
if (ack) {
System.out.println(“消息发送成功”);
} else {
//可以将消息写入本地,使用定时任务重新发送
System.out.println(“消息发送失败:” + cause + “\n重新发送”);
}
}
}
这里有一个点,如果想做实现消息失败重新发送,在注释处可以实现。需要将消息写入本地,如果失败从本地读取,然后发送,如果成功删除本地信息。
6.业务队列(如:订单业务)
这里声明了一个业务队列 ,关键点在于x-dead-letter-exchange,x-dead-letter-routing-key 两个参数。
@Configuration
public class BusinessConfig {
/**
- 业务1模块direct交换机的名字
*/
public static final String YEWU1_EXCHANGE = “yewu1_direct_exchange”;
/**