请不要问为什么,我正在做我所说的。 我正在从Azure Service总线发送消息。我希望使用Mass Transit消费此消息。我可以使用Azure Service Bus从Mass Transit使用消息,但不是相反。 我只能轻松地使用Mass Transit发送和接收消息,但不能从Azure Service Bus到Mass Transit。 有谁知道我怎么能做到这一点?
这是我的实施:
Azure Service Bus发送消息:
.container::before,
.container::after {
display: table;
content: " ";
clear: both;
}
在Mass Transit消费消息:
queueClient = new QueueClient("Endpoint=sb:", AzureQueueName);
var murrr = new MainMessage()
{
ConsignmentReference = DateTime.Now.Ticks.ToString(),
CustomerId = "MOOOOOOOOOOOOOOOOOO",
OtherProperty = 123,
WantMeToFail = false,
};
var json = JsonConvert.SerializeObject(murrr);
var message2 = new Message(Encoding.UTF8.GetBytes(json));
// Send the message to the queue
await queueClient.SendAsync(message2);
这是我希望使用该消息的消费者,我已经尝试了我正在使用的对象和Azure Service Bus对象消息
var bus = CreateAzureBus(ConfigurationManager.AppSettings["AzureQueueName"], ConfigurationManager.AppSettings["AzureNamespace"], ConfigurationManager.AppSettings["AzureKey"], ConfigurationManager.AppSettings["AzureKeyName"], configurator =>
{
configurator.Subscribe(s =>
{
s.Consumer<Consumer>().Permanent();
s.Consumer<RetryConsumer>().Permanent();
s.Consumer<SBConsumer>().Permanent();
});
configurator.SetCreateMissingQueues(true);
});
private static IServiceBus CreateAzureBus(string azureQueueName, string azureNamespace, string azureKey,
string azureKeyName, Action<ServiceBusConfigurator> config = null)
{
var queueUrl = $"azure-sb://{azureNamespace}/{azureQueueName}";
return ServiceBusFactory.New(x =>
{
x.UseAzureServiceBus(r => r.ConfigureNamespace(azureNamespace, h =>
{
h.SetKey(azureKey);
h.SetKeyName(azureKeyName);
}));
x.ReceiveFrom(queueUrl);
x.UseJsonSerializer();
x.UseAzureServiceBusRouting();
x.SetCreateMissingQueues(true);
config?.Invoke(x);
});
}
我也试过这个:
public class SBConsumer : Consumes<Message>.All
{
public void Consume(Message message)
{
AzureProcessor.DoSomethingWithOurMessage(message);
}
}
答案 0 :(得分:0)
MassTransit具有特定的消息格式,消息解串器需要该格式。
http://masstransit-project.com/MassTransit/advanced/interoperability.html
如果您想要使用任意消息,您需要编写自己的反序列化器。