rabbitmq 服务端send消息丢失

zhouyusunquan 2017-09-05 09:54:02
通过网上说的用下面的方法
rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {
if (!ack) {
log.info("send message failed: " + cause + correlationData.toString());
}
});

去捕获是否有发送成功,但是现在的问题是,服务端发送了send后并没有ack,没有触发该方法,所以很坑爹,这个是由于什么造成的,另外这是单机内部,不存在网络故障的问题
...全文
326 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouyusunquan 2017-11-17
  • 打赏
  • 举报
回复
引用 2 楼 lfli912 的回复:
贴的太少,不知道你配置有没有问题,比如publishconfirm等设置了没有
@Bean public ConnectionFactory getConnectionFactory() { RabbitConnectionFactory connectionFactory = new RabbitConnectionFactory(LoadConfig.getConfig().mqIP()); log.info("[ASSF][MQ]配置中获取到mq的IP地址为:" + LoadConfig.getConfig().mqIP()); connectionFactory.setUsername(LoadConfig.getConfig().mqUserName()); connectionFactory.setPassword(LoadConfig.getConfig().mqPassword()); connectionFactory.setPublisherConfirms(true); return connectionFactory; } @Bean public RabbitTemplate rabbitTemplate() { RabbitTemplate template = new RabbitTemplate(getConnectionFactory()); //template.setRoutingKey(CONSUMER_QUEUE); //template.setQueue(this.CONSUMER_QUEUE); template.setConfirmCallback(new RabbitTemplate.ConfirmCallback() { @Override public void confirm(CorrelationData arg0, boolean arg1) { Object o =null; try{ if (arg1){ if(arg0!=null){ o=MqCache.getInstance().removeCacheItem(arg0.getId()); } U3CLogger.getLogger().info("发送MQ消息成功! \r\n消息体:"+o); } }catch(Exception ex){ log.error("发送MQ消息异常 \r\n消息体:" +o); log.error("发送MQ消息异常:"+ex.getMessage(),ex); } } }); RabbitMessageConverter messageConverter = new RabbitMessageConverter(); template.setMessageConverter(messageConverter); return template; } 偶发新出现不会ack
lfli912 2017-10-21
  • 打赏
  • 举报
回复
贴的太少,不知道你配置有没有问题,比如publishconfirm等设置了没有
zhouyusunquan 2017-10-20
  • 打赏
  • 举报
回复
csdn都没有人了。。。。。。。。。。。。。。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧