将新用户添加到IdentiyServerService
时,将调用以下MassTransit
代码:
var newUserCreated = new UserCreated
{
UserId = userId.ToString(),
Name = user.Name
};
await _bus.Publish(newUserCreated);
我的目的地是我的ProfileService
通过RabbitMq
收到此事件。
我的RabbitMq
(IdentiyServerService)中的Startup.cs
配置
private static void ConfigureBus(ContainerBuilder builder)
{
builder.Register(context =>
{
return Bus.Factory.CreateUsingRabbitMq(config =>
{
var host = config.Host(new Uri("rabbitmq://localhost"), h =>
{
h.Username("guest");
h.Password("guest");
});
});
}).As<IBus, IBusControl, IPublishEndpoint>().SingleInstance();
}
我这样开公车
//Startup.cs IdentityServerService
var container = containerBuilder.Build();
var busControl = container.Resolve<IBusControl>();
busControl.Start();
我的ProfileService
中的配置看起来几乎相同。区别在于,我在Startup.cs
(ProfileService)
config.ReceiveEndpoint(host, "user_queue", ep =>
{
ep.Consumer<UserCreatedConsumer>(); // The consumer is registered explicitly this time.
});
我也添加了一个IConsumer
public class UserCreatedConsumer : IConsumer<UserCreated>
{
public Task Consume(ConsumeContext<UserCreated> context)
{
var user = context.Message;
Debug.WriteLine("My debug string here");
return TaskUtil.Completed;
}
}
当我创建新用户时,邮件会收到RabbitMq
(发布率提高)。但是随后什么也没有发生。 Queued messages
中的邮件总数不变。
我有两个连接(我期望IdentityServerService
和ProfileService
)并且我有不同的队列(我只期望一个:user_queue
)
在IConsumer
中实现IdentityServerService
时,会收到消息。
我没有错误日志,警告或其他信息。
无论如何... 1)为什么ProfileService
没有收到该消息? 2)为什么我有这么多队列?
如果您需要更多信息...请告诉
修改
当我在RabbitMq管理中发送消息时,我的ProfileService
收到了一条消息,但是现在出现以下错误
MassTransit.Messages Error: 0 : R-FAULT
rabbitmq://localhost/user_queue_new Value cannot be null.
Parameter name: source,
System.Runtime.Serialization.SerializationException: An exception occurred while deserializing the message envelope ---> System.ArgumentNullException: Value cannot be null.
Parameter name: source