MassTransit 不发送消息 - RabbitMQ
MassTransit not sending messages - RabbitMQ
我有一个问题,MassTransit 没有使用以下代码发送消息 - 这是我们 Azure 服务总线代码的端口,工作正常。 GitHub 中的示例填充了队列 - 星巴克示例,所以我的基础架构正在运行。
任何人都可以提出为什么这不发送消息吗?我已经创建了队列和交换器,并且没有尝试过。
控制台应用打印出预期的结果。
提前致谢。
public class Program
{
static void Main()
{
IBusControl busControl = CreateBus();
TaskUtil.Await(() => busControl.StartAsync());
List<Task> tList = new List<Task>();
for (int i = 0; i < 10; i++)
{
var t = Send(busControl);
tList.Add(t);
}
Task.WaitAll(tList.ToArray());
Console.WriteLine("done!");
}
private static async Task Send(IBusControl busControl)
{
var endpoint = await busControl.GetSendEndpoint(new Uri("rabbitmq://localhost/test"));
Console.WriteLine("Sending");
await endpoint.Send(new SomethingHappenedMessage()
{
What = "Stuff",
When = DateTime.Now
});
Console.WriteLine("Sent");
}
static IBusControl CreateBus()
{
return Bus.Factory.CreateUsingRabbitMq(x => x.Host(new Uri("rabbitmq://localhost"), h =>
{
h.Username("guest");
h.Password("guest");
}));
}
}
public interface SomethingHappened
{
string What { get; }
DateTime When { get; }
}
public class SomethingHappenedMessage : SomethingHappened
{
public string What { get; set; }
public DateTime When { get; set; }
}
当您使用 RabbitMQ 通过 MassTransit 发送消息时,默认情况下不会创建队列绑定。假定服务中的接收端点将创建队列和相关绑定。
为确保发送消息时队列和绑定存在,您可以修改端点地址以包含一些额外的查询字符串参数,如下所示:
rabbitmq://localhost/vhost/exchange_name?bind=true&queue=queue_name
在接收端点的情况下,交换名称和队列名称相同。
我有一个问题,MassTransit 没有使用以下代码发送消息 - 这是我们 Azure 服务总线代码的端口,工作正常。 GitHub 中的示例填充了队列 - 星巴克示例,所以我的基础架构正在运行。
任何人都可以提出为什么这不发送消息吗?我已经创建了队列和交换器,并且没有尝试过。
控制台应用打印出预期的结果。
提前致谢。
public class Program
{
static void Main()
{
IBusControl busControl = CreateBus();
TaskUtil.Await(() => busControl.StartAsync());
List<Task> tList = new List<Task>();
for (int i = 0; i < 10; i++)
{
var t = Send(busControl);
tList.Add(t);
}
Task.WaitAll(tList.ToArray());
Console.WriteLine("done!");
}
private static async Task Send(IBusControl busControl)
{
var endpoint = await busControl.GetSendEndpoint(new Uri("rabbitmq://localhost/test"));
Console.WriteLine("Sending");
await endpoint.Send(new SomethingHappenedMessage()
{
What = "Stuff",
When = DateTime.Now
});
Console.WriteLine("Sent");
}
static IBusControl CreateBus()
{
return Bus.Factory.CreateUsingRabbitMq(x => x.Host(new Uri("rabbitmq://localhost"), h =>
{
h.Username("guest");
h.Password("guest");
}));
}
}
public interface SomethingHappened
{
string What { get; }
DateTime When { get; }
}
public class SomethingHappenedMessage : SomethingHappened
{
public string What { get; set; }
public DateTime When { get; set; }
}
当您使用 RabbitMQ 通过 MassTransit 发送消息时,默认情况下不会创建队列绑定。假定服务中的接收端点将创建队列和相关绑定。
为确保发送消息时队列和绑定存在,您可以修改端点地址以包含一些额外的查询字符串参数,如下所示:
rabbitmq://localhost/vhost/exchange_name?bind=true&queue=queue_name
在接收端点的情况下,交换名称和队列名称相同。