Bob*_*Bob 1 oracle odp.net oracle-aq
我使用 Oracle ODP.Net 进行入队和出队。
进程 A:入队进程 B:出队与 MessageAvailable 事件
如果进程 A 和 B 正在运行,则没有问题。在“进程 B”上,事件总是被触发。
但是,如果“进程 B”关闭而“进程 A”打开,则当“进程 B”重新启动时,在关闭时间内插入的队列将丢失。
是否可以选择为过去插入的所有队列触发事件?
非常感谢
小智 5
似乎有两种方法可以解决这个问题:
我一直在摸索这个话题。如果您仍然必须“手动”测试新消息,那么首先使用 MessageAvaiable 事件回调有什么好处?我考虑过的一种方法是将 Listen() 方法包装在异步调用中,以便调用者不会在线程上阻塞(直到收到消息或发生超时)。我在自定义的 Receive() 方法中包装了 Listen() 和 Dequeue() 并创建了我自己的 MessageReceived 事件处理程序以将消息详细信息传递给调用线程。似乎有些多余,因为 ODP.NET 提供了开箱即用的回调,但我不必处理您描述的问题(或编写代码以“手动”测试“孤立”消息。
欢迎对方法提出任何意见/想法。