回答
像这样的东西应该工作:
while(1=1)
begin
waitfor (
receive top(1)
conversation_group_id
from dbo.yourQueue;
if (@@rowcount = 0)
begin
break;
end
), timeout 1000;
end
如果你正在使用[接收端点清理对话的消息模式](http://rusanu.com/2014/03/31/如何防止对话 - 端点泄漏/),您可能需要对某些收到的消息进行特殊处理(例如,对任何类型为EndOfStream的消息调用END CONVERSATION)。 –
我会用end conversation(也将从所有队列中删除所有相关的消息)using语句:
End Converstation @c With CleanUp
如果你只是收到消息,然后你打开对话。 使用CleanUp结束对话仅适用于特定情况。
只是为了清晰起见,将前两个答案(Ben和Jānis)结合起来。这为我工作:
declare @c uniqueidentifier
while(1=1)
begin
select top 1 @c = conversation_handle from dbo.queuename
if (@@ROWCOUNT = 0)
break
end conversation @c with cleanup
end
这个答案的另一个好处是,使用'SELECT'而不是'RECEIVE'可以清除队列,即使它被禁用。 – jgauffin
当我用(@c为null)条件更改(@@ ROWCOUNT = 0)检查时为我工作。谢谢 – earthling42
while(1=1)
begin
waitfor (
receive top(1)
conversation_group_id
from kartokumaqueue2), timeout 1000;
if(@@ROWCOUNT = 0) break;
end
这个答案虽然潜在的正确性缺乏上下文,并会通过代码评论来改进,说明为什么这个答案有效。请参阅http://stackoverflow.com/help/how-to-answer – Jonnus
如果使用SQL Server(从2008年),可以使用RECEIVE
WHILE (0=0)
BEGIN
RECEIVE * FROM Dbo.YourQueue
END
- 1. 服务代理 - 如何响应的消息,不同的队列
- 2. 如何从队列中删除消息?
- 3. 消息队列Windows服务
- 4. 如何控制或管理JMS队列?例如。改变队列中的消息顺序,删除消息等
- 5. 如何重播服务代理消息:中毒消息处理
- 6. 消息从队列中删除
- 7. 清除SQL Server服务代理队列
- 8. 如何积极处理Azure服务总线队列消息
- 9. DestroyWindow()从消息队列中删除窗口的消息吗?
- 10. SpringIntegration删除队列中的消息,而不处理
- 11. 如何有选择地从AMQP(RabbitMQ)队列中删除消息?
- 12. 如何从AMQP(RabbitMQ)队列中删除消息?
- 13. 如何从JMS队列中删除消息?
- 14. 集成api服务与消息队列
- 15. 消息队列服务不可用
- 16. Azure服务结构和消息队列
- 17. NodeJS和队列消息服务
- 18. Java消息服务队列会话
- 19. Azure服务结构消息队列
- 20. 没有本地消息队列服务器的远程消息队列
- 21. 如何清除POSIX消息队列?
- 22. 如何删除或AMQP队列推迟的消息
- 23. 如何清理IPC消息队列?
- 24. 消息队列和服务总线的消息粒度
- 25. 如何将消息从ESB的主题发送到消息代理的队列
- 26. 有没有办法从Azure中的服务总线队列中删除待处理的消息?
- 27. OSB代理服务消息处理
- 28. 无法将消息放入退出队列消息代理
- 29. 消息代理队列和消息类型
- 30. 的GetMessage /的PeekMessage - 删除在消息队列中的所有消息
是否要清除数据库中的所有队列的所有消息?你应该使用'ALTER DATABASE ... SET NEW_BROKER WITH ROLLBACK IMMEDIATE;' –