Introduction to MSMQ

What is MSMQ?

Microsoft Message Queuing, or MSMQ, is technology for asynchronous messaging. Whenever there's need for two or more applications (processes) to send messages to each other without having to immediately know results, MSMQ can be used. MSMQ can communicate between remote machines, even over internet. It's free and comes with Windows, but is not installed by default.

Typical usage

Typical example of MSMQ usage would be order processing application: orders are collected online using web forms and by sales team using some offline application. Order processing is slow, because third party payment provider is used. Third party resource can be unavailable at times and we don't want that failure to affect our application - we can delay processing of pending orders, but new orders must be collected.

Notification web page should be immediately displayed to user, even if that order is processed hours later. Sales must collect orders offline and send them to processing later, when connection with order processing server is available. After payment is processed it should be enough just to send message that shipment should be sent, and not wait for delivery to be completed. MSMQ is ideal for these kind of scenarios - when applications should be isolated and work even if other applications they interact with are down or unavailable.

From programming point of view, MSMQ is very easy - applications just need to send and receive messages, MSMQ will take care of message delivery, wait until recipient is available, etc. MSMQ supports transactions, if processing fails for any reason message can be returned back to queue to be retried later. Distributed transactions with database operations are supported too, if COM+ is used.

Alternative to MSMQ

Another approach to isolate applications could be to use some shared resource, like database. First application would write there data for processing. Another application would have to periodically check if there's something new, and process it. Beside inefficiency of pinging database constantly, this approach requires much more work - some protocol must be created to know if message (i.e. row) is pending or processed. However this is tip of an iceberg - MSMQ offers much more: messages can have different priority, limited life time, notification of success or failure can be delivered, processed messages can be stored in journal, etc. All this functionality would have to be reinvented.

When things go wrong

So far one of main reasons not to use MSMQ was lack of tools that could help when things go wrong. And they do go wrong. Most notorious problem are poison messages - when some message can not be processed and blocks entire queue. If we implement manual messaging using database every situation could be solved by manual database modifications.

If MSMQ is used messages and queues are in proprietary format which cannot be edited directly. Only available management tool is MMC administration console (or MqExplorer in earlier versions). If it can't do what you need you're out of luck - you have to write some code that accesses MSMQ API directly. Problem is even simplest operations like deleting or copying messages are not available from MMC!

Fortunately with tool like QueueExplorer troubleshooting becomes much easier - all commonly used operations are available from explorer-like interface.

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值