【发布时间】:2021-05-05 14:30:03
【问题描述】:
我在 IIS 上有一个 .Net 4.8 Web 应用程序,该应用程序曾经调用过,它使用 MassTransit 将消息发布到 RabbitMQ 队列。大多数情况下一切正常,但在某些情况下(如十分之一)我不知道为什么没有发布任何内容。我在发布之前/之后有一个调试日志,并且永远不会触发“之后”。没有例外,没有什么。
// Constructor, fired on each request - maybe it's better to have static one?
public QueueLibHelper()
{
var cfg = ConfigHelper.GetConfig();
bus = Bus.Factory.CreateUsingRabbitMq(x =>
x.Host(new Uri(cfg.Host),
h => {
h.Heartbeat(15);
h.Username(cfg.UserName);
h.Password(cfg.Password);
if (!String.IsNullOrWhiteSpace(cfg.Nodes))
{
string[] nodes = cfg.Nodes.Split(',');
h.UseCluster(c =>
{
foreach (var n in nodes)
{
c.Node(n);
}
});
}
}));
bus.Start();
}
// Sending to queue,
public void UpdatePmtToQueue(long paymentId, string status)
{
var message = new InputData() { Id = paymentId, Status = status };
MassTransit.Util.TaskUtil.Await(() => bus.Publish<IInputData>(message));
StopBus();
}
我认为它可能与整个异步/等待情况有关。我也试过GetAwaiter().GetResult(),但这种方法有很多不同的问题。也许公共汽车在发布实际运行之前以某种方式关闭?
我尝试像这样添加 MT 日志记录,但没有写入日志:
<source name="MassTransit" switchValue="All">
<listeners>
<add name="Console" type="MassTransit.Logging.Tracing.ConsoleTraceListener, MassTransit" />
<add name="Xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="MassTransit.svclog" />
</listeners>
</source>
任何想法可能是错误的,或者至少如何查看 MassTransit 内部正在做什么(失败)?
【问题讨论】:
标签: c# asp.net rabbitmq masstransit