我不知道如何使用MassTransit 3.1.2和RabbitMQ 3.6.0发布消息事务。我有一个基本的场景,我将一些东西保存到数据库中,然后我想要发布一个事件。在我完成消息已经发送的范围之前,包装它的System.Transactions.TransactionScope是不起作用的:
using (var scope = new TransactionScope(TransactionScopeOption.Required))
{
// Save to database here.
bus.Publish(new EntityCreatedEvent());
我有两个函数,每个函数都在创建特定于一个事务的日志;它是一个多线程应用程序,因此对于已完成的事务,func1的函数条目可以是随机的,但是对于单个事务,它只能通过func1、func2和func3订单进行。
func1(transactionId) {
log("%d Now in func1", transactionId);
}
func2(transactionId) {
log("%d Now in func2", transactionId);
}
func3(transactionId) {
log("%d N
在我以前的工作中,我使用了AMQP的好处,但我没有参与rabbitMQ子项目开发。在我目前的工作中,我想负责集成一个AMQP实现(可能是rabbitMQ)。这里的问题是我必须说服我的老板使用AMQP。
我正在阅读"RabbitMQ in Action“,Videla先生写道,AMQP可以改进任何系统,但我不知道如何改进我的项目。我们只使用两个服务器在中间调用API,所以我们现在没有可伸缩性问题。我们处理的是真正的资金流,这意味着任何操作都需要成功的确认,也就是说,我不能把任务排在队列中,“忘记”它。在这种情况下,AMQP能带来什么好处?
当你不需要很难扩展的时候,你能提供几个关于相对较
我正在尝试构建集成流,这将防止消息在传递给AMQP (rabbitMQ)时丢失。在代理停止的情况下,我看到一些意想不到的行为:
失败的邮件正在保存到消息存储区,但保存时间不长。这个流程并不是等待代理的可用性,它从消息存储中提取消息,即使代理仍然被停止以防止重新启动rabbitmq,消息存储中的记录(如果仍然存在)也不会被传递到队列中。
请帮我调查一下。代码示例:
@Bean
public MessageChannel messageStoreBackedChannel() {
return new QueueChannel(
new MessageGroupQ
我已经实现了Redis,在某些端点上的一些更新中,我需要连接到某个RabbitMQ服务器或RESTful服务器。这些消息将帮助事件进一步展开。我的问题是,在这种情况下,我如何处理网络异常?
例如,如果任务A被更新,我首先在数据库中更新任务的状态(例如mongodb),然后在某个RabbitMQ服务器上提交一条消息,以通知另一个微服务上的另一个消费者。或者我可能需要在Redis服务器上更新一些计数器。
* API REQUEST - update Task A
*serving request:
* update Task A on DB
* send message to RabbitMQ a