- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图弄清楚如何在 java 中确认消息,但我一直没有理解它。
这是官方的 RabbitMQ 示例:
http://hg.rabbitmq.com/rabbitmq-java-client/file/default/test/src/com/rabbitmq/examples/ConfirmDontLoseMessages.java
问题是他们使用 10000 条消息发送到一个队列,然后他们才等待所有消息都得到确认。我需要发送 1 条消息,每个线程只发送一条消息并确认它(在我的情况下,我有几个平等的发布者必须不时发送消息)。如何确认一条消息(不是确认所有消息)?
我需要这样的东西:
for (long i = 0; i < MSG_COUNT; ++i) {
ch.basicPublish("", QUEUE_NAME,
MessageProperties.PERSISTENT_BASIC,
"nop".getBytes());
ch.wait_for_confirm();
if(ch.isConfirmed){
//OK
}
else{
//Republish
}
}
最佳答案
阅读这篇文章:
http://www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/
简而言之,您可以使用 tx-transactions
:
ch.txSelect();
for (int i = 0; i < MSG_COUNT; ++i) {
ch.basicPublish("", QUEUE_NAME,
MessageProperties.PERSISTENT_BASIC,
"nop".getBytes());
ch.txCommit();
}
或 publish-confirmation
处理程序:
ch.addConfirmListener(new ConfirmListener() {....}
第一个比第二个简单但慢。
关于java - 如何用Java确认RabbitMQ消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39848878/
我是一名优秀的程序员,十分优秀!