我正在使用Nifi从IBM MQ获取数据。它工作正常。我的问题是,一旦从MQ队列中读取消息,它是否会从队列中删除?如何从队列中读取消息而不将其从队列中删除?
答案 0 :(得分:2)
我的问题是,一旦从MQ队列中读取消息,它就会得到 从队列中删除?
是的,这是默认行为。
如何从队列中读取消息而不删除它们 队列?
您可以在MQGET API调用上使用选项:MQGMO_BROWSE_FIRST,然后使用MQGMO_BROWSE_NEXT。
您也可以打开队列进行浏览。即MQOPEN API调用的MQOO_BROWSE选项。
答案 1 :(得分:-2)
听起来好像您想使用“发布/订阅”模型而不是“点对点”模型。
来自ActiveMQ:
主题在JMS中,主题实现了发布和订阅语义。什么时候 你发布一条消息给所有订阅者 感兴趣的 - 所以零到多的订阅者都会收到一份 信息。只有当时有效订阅的订阅者 经纪人收到消息后会得到一条消息。
队列JMS队列实现负载均衡器语义。单身 消息将由一个消费者接收。如果没有 消息发送时可用的消费者将保留 直到有消费者可以处理消息。如果一个 消费者在收到消息之前收到消息并且不会确认消息 然后该消息将被重新传递给另一个消费者。一个队列可以 有许多消费者在可用的消息负载平衡 消费者。
如果您有一个队列,当消费者使用该消息时,它将从队列中删除,以便下一个消费者使用下一个消息。通过主题,可以为多个消费者订阅该主题并检索相同的消息而不是排他性的。
如果这些都不适合你,我不确定你正在寻找什么语义 - 一个“队列”在消费时不删除消息将永远不会让消费者访问除了第一个信息。