繁体   English   中英

SQL队列服务代理应用程序

[英]SQL Queue Service Broker Application

我正在设计一个将从SQL队列中读取消息的应用程序。 这是一项要求。 我必须使用他们的队列。 问题是如何读取他们的队列。 我想像MSMQ一样使用它,但它看起来不可能。 我需要一次读取一个FIFO顺序的消息。 要一次读一个,我必须使每个消息成为一个对话,但它们不一定按FIFO顺序。 我可以使用一个永无止境的对话来维持秩序,但我相信我必须阅读队列中的所有内容。 不只是一条消息。 有没有人构建一个应用程序来执行我需要它的方式? 这不可能吗? 还有其他建议吗?

提前致谢。

从SQL队列中读取消息。 这是一个要求......我想像MSMQ一样使用它,但它看起来不太可能。 我需要一次读取一个FIFO顺序的消息。

我的建议是不要试图在圆孔中安装方形钉。 如果要求使用Service Broker,那么不要试图适应您的编程模型。 教育自己一点关于Service Broker编程,并尝试设计一些利用SSB优势的东西。 在你前进之前阅读这些链接:

来吧,我等一下......

我希望现在很清楚,有一种方法做你原来问:国家统计局提供正好一次在订单交付的对话中 ,所以你只能通过发送上一个会话的所有消息实现FIFO。 SSB还允许您使用RECEIVE TOP(1) ... FROM ...将出列限制为仅一条消息。 结合这两个,你得到你所要求的。

但这不是SSB应用程序的设计方式。 实际上没有理由将出列限制为单个消息,您应该将批次出列并循环处理批处理。 保持一个交易,结果与一次一个地出列无法区分。 接下来,FIFO要求只有在会话中才有意义,只要你有多个发送者FIFO不存在,作为一个基本概念(当多个发件人同时发送消息时'首先'意味着什么?'先''命中目标队列,在随机网络轮盘?)。 您可以通过消息到达的顺序出现来获得FIFO的错觉,实际上SSB就是这样做的。 一旦考虑并发处理,天真的“全局FIFO”概念就会崩溃。 抛弃回滚并重试为香料。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM