首页 新闻 会员 周边 捐助

msmq消息队列

0
[已解决问题] 解决于 2017-01-15 21:26

  现在的消息队列有很多种方式,刚开始学习先从msmq 学起,想到msmq是否支持发布订阅模式? 百度都是其他的队列并不是msmq的 故来园子里问问,有知道的老哥提点一下,各抒己见不要吝啬,知多知少都说下。 谢谢您了先。

liyanzhao的主页 liyanzhao | 初学一级 | 园豆:42
提问于:2017-01-11 23:12
< >
分享
最佳答案
0

msmq不支持这种模式,但msmq支持分布式事务。msmq性能上一般,但一般用用也就那样。

其他amqp协议的mq有rabbitmq,activemq,rocketmq等

有些比较有特点的比如redis,zeromq,zookeeper,kafka这些,第一个虽说做cache但也有mq这种特性,第二个就是极端追求性能但无法数据安全性的,zookeeper那个由于本身就是在分布式环境中做信息同步的,所以也有这个技能点;kafka还没怎么接触过,但这个最好也了解下。

如果你学mq我建议从rabbitmq开始,这个比较友好,很多地方都可以通过界面配配就出来了,而且功能也强大,msmq相对而言就黯淡很多了。

奖励园豆:5
Daniel Cai | 专家六级 |园豆:10424 | 2017-01-12 09:08

多线程从队列里取数据,结果会是 多个线程加起来的数据等于队列中的数据,msmq 取一个少一个 怎么解决这个问题

liyanzhao | 园豆:42 (初学一级) | 2017-01-12 09:12

@liyanzhao: 没太明白,q本身就是dequeue一个少一个,管你有几个消费者,你如果不想让数据被从queue中删掉,那只能peek/nack(amqp)(但多个消费者同时peek会拿到重复的数据)

Daniel Cai | 园豆:10424 (专家六级) | 2017-01-12 09:18

@Daniel Cai: 从队列中取到数据发给多个消费者,可以理解成 一个发布者 多个订阅者, 订阅者收到消息 队列中就删除

liyanzhao | 园豆:42 (初学一级) | 2017-01-12 09:21

@liyanzhao: 那你的问题呢?

Daniel Cai | 园豆:10424 (专家六级) | 2017-01-12 09:24

@Daniel Cai: 比如说有一个队列 里面有 1 2 3 4 5    开两个线程从队列中取数 ,结果是一个线程 取到的是1 3 5 而另一个线程取到的是 2 4    怎么让两个线程都取到 1 2 3 4 5  。 或者是刚开始有一个线程正在从队列里面取数 当取到 2 的时候 另一个线程加入进来, 向要的结果是 第一个线程 取到 1 2 3 4 5  第二个线程取到 3  4 5 

liyanzhao | 园豆:42 (初学一级) | 2017-01-12 09:29

@liyanzhao: msmq不行,其他有些可以做到

比如rabbitmq中的exchange设定为fanout,通过代码完成queue的建立及对这个exchange的绑定过程,一旦完成则所有通过这个exchange过来的消息将会分发到其下所有绑定的队列。

Daniel Cai | 园豆:10424 (专家六级) | 2017-01-12 09:32

@Daniel Cai: 好的 ,这块需要好好花时间学习,谢谢你这么耐心的解答。嘿嘿。

liyanzhao | 园豆:42 (初学一级) | 2017-01-12 09:36

rabbitmq只支持.net 4.5 以上的项目吗?

liyanzhao | 园豆:42 (初学一级) | 2017-01-13 11:33

@liyanzhao: 没这种说法。我这边也有3.5的用这个的。

Daniel Cai | 园豆:10424 (专家六级) | 2017-01-13 16:23
其他回答(1)
0

消息队列的本质就是发布/订阅

MSMQ比较弱,学RabbitMQ吧

http://git.oschina.net/lishilei0523/WCF-RabbitMQ

黄昏MMM | 园豆:320 (菜鸟二级) | 2017-01-12 09:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册