【发布时间】:2021-09-25 04:10:30
【问题描述】:
我是队列的新手,我有一个单独发布消息的队列。使用调度程序,我需要在特定时间使用 IBM MQ 连接器中的所有消息。
因为消费者一次只获取一条消息,调度程序每天只运行一次。那么如何实现从队列中获取所有消息的需求呢?
谁能建议这是否可以实现,如果可以,方法是什么?
提前致谢。
【问题讨论】:
我是队列的新手,我有一个单独发布消息的队列。使用调度程序,我需要在特定时间使用 IBM MQ 连接器中的所有消息。
因为消费者一次只获取一条消息,调度程序每天只运行一次。那么如何实现从队列中获取所有消息的需求呢?
谁能建议这是否可以实现,如果可以,方法是什么?
提前致谢。
【问题讨论】:
我假设您的问题是指在 Mule 4 中部署的 Mule 应用程序中使用 IBM MQ 连接器,这是一家名为 MuleSoft 的公司的产品。
队列通常不以这种方式使用。一次读取和处理一条消息。如果您需要阅读所有消息,只需使用listener 即可接收所有消息。如果您需要在给定时间阅读一条消息,请使用consume 操作。但是,如果您想在某个时间段内处理所有可能的消息,您有几种选择来实现:
使用侦听器作为流的来源,并在流的主体中添加一个选项以检查一天中的时间是否合适。如果不使用manual acknoledgement 再次将消息回滚到队列中并在流程完成之前抛出错误。
在适当的时候使用调度程序start and stop the listener flow programmatically。这可能会也可能不会起作用,因为它会混淆连接器并引发错误。我看到过去发生过这种情况。
我的建议是避免这样做,而只使用侦听器来阅读所有消息。要求发件人仅在适当的时间发送消息;-)
【讨论】: