StringAMQP使用@RabbitListener注解,如何进行手动ACK确认?

扖戯 2017-02-23 11:50:32
@Component
public class Receiver1 {


@RabbitListener(queues = "sys.topic.login.message")
@Transactional
public void process1(String message)throws Exception {
//int i = 1/0;
System.out.print("路由键:"+ MQMConstant.SYS_TOPIC_LOGIN_MESSAGE);
System.out.print("这里是接收者1答应消息: ");
System.out.println("SYS_TOPIC_ORDER_CALCULATE_ZZ_FEE process1 : " + message);
}
}

如上代码是使用@RabbitListener监听消息,在process1()不怕抛出异常的情况下是可以接受到消息的
但是如果出现异常,那么该条消息就不消费了,消息一直处于待消费状态,然后又来监听,又异常, 一直循环。

对于这种情况应该是没有手动ACK处理导致的,这种情况能否有好的处理方法?
...全文
3756 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
扖戯 2017-02-24
  • 打赏
  • 举报
回复 2
@RabbitListener(queues = "sys.topic.login.message") public void process1(@Payload String message, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag, Channel channel)throws Exception { if(message.equals("1")){ int i = 1/0; } channel.basicAck(deliveryTag,false); System.out.print("这里是接收者1答应消息: "); System.out.println("SYS_TOPIC_ORDER_CALCULATE_ZZ_FEE process1 : " + message); }
JE_GE 2017-02-23
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_48d4cf2d0102w53t.html

67,513

社区成员

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

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