gpt4 book ai didi

.net - WCF MSMQ 的观察者模式

转载 作者:行者123 更新时间:2023-12-02 00:46:44 25 4
gpt4 key购买 nike

MSMQ携带的消息是否可以有多个监听器?

WCF 似乎以服务的形式构建一切,使通信成为点对点的事情。我想使用消息队列来缓冲另一个在数据库中记录日志的进程的传入流量。

可以有任何数量的其他进程对监视传入流量感兴趣,这肯定需要观察者模式,但我看不出如何表达观察者模式,至少不能通过 WCF 使用 MSMQ。

有人可以就此给我建议吗?


关于我为什么关心的一些背景,这也可以用来说明问题:我有一个 Windows 服务,它接受来自现场小黑盒的连接请求。它设置套接字,黑匣子发送消息描述事件,并在时间和空间上用 GPS 位置注释。

我解析来自套接字流的消息数据包,并通过 MSMQ 将它们发送到另一个进程,该进程过滤重复项并将数据包写入数据库表。

任何数量的后处理都可以从响应传入流量的增量计算中获益,并且用户工具也会执行用户通知以响应传入流量。

所以,我真的很希望有一个进程发送消息,而多个进程接收消息。这些接收者之一负责解析数据包内容并将消息转录到数据库中;这是最终从队列中删除消息的责任的明显候选者,但存在如何确保这是处理消息的最后一个处理程序的问题。

最佳答案

我认为 MSMQ 本身并没有适本地设计来处理这种情况。对于一条消息,您只能做两件事——Peek() 或 Get()。 AFAIK,没有一种好方法来跟踪消息是否已被所有处理程序处理。

可行的方法是让转录消息的进程成为观察者,并在转录消息和写入数据库之前将消息发布(可能使用 .NET 事件架构)给所有感兴趣的观察者。这将保证所有感兴趣的观察者都能看到消息,并且消息会被适本地写入数据库。

关于.net - WCF MSMQ 的观察者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/248541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com