如果应用程序当前无法处理,从 MQ 异步获取的获取消息保存在哪里?
Where the get messages got ASYNCHRONOUSLY from MQ are kept if the application cannot process it in current moment?
我有一个关于 MQ 和 Java 应用程序的概念性问题。
我有一个批处理应用程序 (java),它将从 MQ 读取消息(设置为保留消息),我有两个选择,同步或异步...
关键是我很困惑发送异步消息时会发生什么,而应用程序当时无法处理。消息丢失了吗?保留在任何类型的队列中(在应用程序内部),还是我应该处理异常以在应用程序可用时重新发出请求?
MQ > 有资源要处理吗? (例如,不再有线程)> 否 > 应用程序 > 拒绝 > ?
够清楚了吗?
您的持久消息由 MQ 保留在队列中,直到您的 getter 可以获取它。
但请注意这一点。如果您的应用正在获取持久消息,请确保它使用同步点(允许您提交或回滚)。然后,如果应用程序未能正确处理消息,它可以回滚它的获取,并且消息将在下一个 MQGET 的队列中再次可用。
我有一个关于 MQ 和 Java 应用程序的概念性问题。
我有一个批处理应用程序 (java),它将从 MQ 读取消息(设置为保留消息),我有两个选择,同步或异步...
关键是我很困惑发送异步消息时会发生什么,而应用程序当时无法处理。消息丢失了吗?保留在任何类型的队列中(在应用程序内部),还是我应该处理异常以在应用程序可用时重新发出请求?
MQ > 有资源要处理吗? (例如,不再有线程)> 否 > 应用程序 > 拒绝 > ?
够清楚了吗?
您的持久消息由 MQ 保留在队列中,直到您的 getter 可以获取它。
但请注意这一点。如果您的应用正在获取持久消息,请确保它使用同步点(允许您提交或回滚)。然后,如果应用程序未能正确处理消息,它可以回滚它的获取,并且消息将在下一个 MQGET 的队列中再次可用。