我已经使用 weblogic server 12c 设置了统一的分布式队列。我正在尝试使用 jms 分布式队列来实现交付顺序和高可用性。在我的原型测试部署中,我在集群中有两台托管服务器,让我们说 managed_server1 和 managed_server2。每个托管服务器都托管 jms 服务器,即 jms server1 和 jms server2。我已经使用 jdbc 持久存储配置了 jms 服务器。我已启用服务器关联。
- 我有一个生产者正在运行,例如 java queuproducer t3::/managed_server1。我发送了 4 条消息。从 weblogic 监控控制台我看到队列中有 4 条消息,因为队列中还没有消费者。
- 现在我关闭了 managed_server1。
- 在 java queuconsumer t3://managed_server2 上启动一个消费者来监听。此消费者无法消费消息,因为生产者将所有消息发送到 jms server1,并且它已关闭。
- 启动托管服务器 1,启动一个消费者来收听 t3://managed_server1 我可以获取所有消息。
这是我的问题,如果 managed_server1 出现故障,那么它就再也没有恢复,我是否丢失了所有消息。此外,如果有另一个生产者向 java queuproducer t3://managed_server2 发送消息,则不保证基于这些生产者之间时间的消息顺序。
我有点失落,我是不是错过了什么。订单单位可以帮助我克服这个问题。或者我应该使用分布式主题而不是分布式队列,其中所有 jms 服务器将接收来自生产者的所有消息,但是如果我的消费者正在侦听的一个 jms 服务器出现故障,那么当我切换到另一个时,我的应用程序中只有一个消费者jms 服务器,我可能从一开始就开始接收消息,而不是从我离开的地方。
任何有关相同的建议都会有所帮助。