首页 新闻 会员 周边

关于消息队列的疑问 RabbitMq

0
[待解决问题]

最近在研究RabbitMq,根据官网例子写了个程序,包含生产者和消费者两个子程序

现在情况是这样,我生产者每次生产5条数据,消费者能立即接受到5条然后处理,接收代码

Console.WriteLine(" [*] Waiting for messages.");
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
LogHelper.Instance.PayCenterFileLog.Info(message);
Console.WriteLine(" [x] Received {0}", message);
};
channel.BasicConsume(queue: "PaymentMessageQueue", noAck: true, consumer: consumer);

Console.ReadLine();

这段代码会把5条嘻嘻读取出来处理,问题是:

我在消费端是不是只需要写一个程序,启动起来不关闭,一直监听数据,然后处理数据

还是需要写一个服务,定时执行该程序,服务执行时候再处理数据

余粮的主页 余粮 | 初学一级 | 园豆:37
提问于:2016-12-30 17:08
< >
分享
所有回答(2)
0

你如果用 EventingBasicConsumer 来监听消息队列的话,只需要把程序运行起来,当然也可以把程序用服务承载,再配置一下自动断线重连啥的就可以了,一有新的消息就会通过 Received 事件通知你的了。

你如果用主动拉的方式去消息队列取数据的话,就要像你下面说的要搞个程序定时去队列拉数据下来。

两种方式各有利弊,看使用场景吧。

terry59599s | 园豆:202 (菜鸟二级) | 2016-12-30 17:22
0

要写一个windows服务.不用定时执行.只要注册了就行.我有个框架很好用私聊我吧.

吴瑞祥 | 园豆:29449 (高人七级) | 2016-12-30 17:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册