1.在获取消息队列时有两种方式
同步方式
bus.Subscribe<Message>(msg.MessageRouter, message => ipro.ProcessMsg(message), x => x.WithTopic(msg.MessageRouter))
异步方式
bus.SubscribeAsync<Message>(msg.MessageRouter, message => Task.Factory.StartNew(() => ipro.ProcessMsg(message)), x => x.WithTopic(msg.MessageRouter));
执行后都会调用ProcessMsg方法
我的问题是使用同步方式较好还是异步较好
用异步的话如果数据量比较大,会不会同时处理会消耗内存较高
还有队列是先进先出,异步的话处理会不会乱
2.在RabbitMq中有代码
channel.BasicAck(ea.DeliveryTag, false);
是通知删除消息
而在easynetq中是怎么怎么一种机制实现这功能的
3.我在客户端发了一个消息到队列,怎么才能知道处理结果
如:我下单信息发送到队列,怎么知道是否下单操作成功
m没有看过你bus这个代码是怎么封装的不清楚。但是rabbitmq还是了解一些,接收/处理消息。他本身就是异步的。
没必要Task.Factory.StartNew了。这个地方反而多了线程的调用和切换。
channel.什么来着,可以设置处理消息的并发数量的。由此可见rabbitmq这一块就是自己有线程池的。所以多此一举。
还有叫rabbitmq。不是rubbitmq
2没法回答你,没用过。
1.不需要再次异步,且消息本身并发处理不能保证顺序。如果要保证按照发送顺序处理,可以设置channel.BasicQos保证并发处理为1.
3.rabbitmq有远程rpc模式。
你的问题解决了吗?easynetq怎么确认消息?