- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经检查了有关 Scheduling with Azure Service Bus 的文档,但我不清楚如何从“断开的”总线发送消息。
以下是我如何配置在服务器上处理消息的服务:
builder.AddMassTransit(mt =>
{
mt.AddConsumers(cqrsAssembly);
mt.AddBus(context => Bus.Factory.CreateUsingAzureServiceBus(x =>
{
x.RequiresSession = true;
x.MaxConcurrentCalls = 500;
x.MessageWaitTimeout = TimeSpan.FromMinutes(5);
x.UseRenewLock(TimeSpan.FromMinutes(4));
x.UseServiceBusMessageScheduler();
var host = x.Host(serviceUri, h =>
{
h.SharedAccessSignature(s =>
{
s.KeyName = "key-name";
s.SharedAccessKey = "access-key";
s.TokenTimeToLive = TimeSpan.FromDays(1);
s.TokenScope = TokenScope.Namespace;
});
h.OperationTimeout = TimeSpan.FromMinutes(2);
});
x.ReceiveEndpoint(host, $"mt.myqueue", ep =>
{
ep.RequiresSession = true;
ep.MaxConcurrentCalls = 500;
ep.RemoveSubscriptions = true;
ep.UseMessageRetry(r =>
{
r.Interval(4, TimeSpan.FromSeconds(30));
r.Handle<TransientCommandException>();
});
ep.ConfigureConsumers(context);
});
});
});
我已明确调用 UseServiceBusMessageScheduler()
。
在创建消息并将其发送到队列的项目中(在不同的上下文中运行,因此完成“仅发送”),我们有以下内容:
var bus = Bus.Factory.CreateUsingAzureServiceBus(x =>
{
x.RequiresSession = true;
x.MessageWaitTimeout = TimeSpan.FromMinutes(5);
x.UseRenewLock(TimeSpan.FromMinutes(4));
x.Send<ICommand>(s => s.UseSessionIdFormatter(ctx => ctx.Message.SessionId ?? Guid.NewGuid().ToString()));
var host = x.Host(serviceUri, h =>
{
h.SharedAccessSignature(s =>
{
s.KeyName = "key-name";
s.SharedAccessKey = "key";
s.TokenTimeToLive = TimeSpan.FromDays(1);
s.TokenScope = TokenScope.Namespace;
});
h.OperationTimeout = TimeSpan.FromMinutes(2);
});
EndpointConvention.Map<ICommand>(new Uri($"{serviceUri.ToString()}mt.myqueue"));
EndpointConvention.Map<Command>(new Uri($"{serviceUri.ToString()}mt.myqueue"));
});
现在,要发送预定消息,我们这样做:
var dest = "what?";
await bus.ScheduleSend(dest, scheduledEnqueueTimeUtc.Value, message);
我不确定需要将什么传递到destinationAddress
。
我尝试过:- serviceUri
- `{serviceUri}mt.myqueue"
但是检查队列时,我在基本队列、skipped
队列或error
队列中都没有看到我的消息。
我是否缺少一些其他配置,如果没有,如何确定目标队列?
我正在使用 Mass Transit 的 5.5.4
版本,ScheduleSend()
的每次重载都需要它。
最佳答案
首先,您的 Uri 格式是正确的。最后格式化后你需要这样的东西:
new Uri(@"sb://yourdomain.servicebus.windows.net/yourapp/your_message_queue")
另请确保您在配置端点时添加了。 (见下面的链接)
configurator.UseServiceBusMessageScheduler();
如果您遵循公共(public)交通文档,调度是通过 ConsumeContext 完成的。请参阅Mass-Transit Azure Scheduling
public class ScheduleNotificationConsumer :
IConsumer<AssignSeat>
{
Uri _schedulerAddress;
Uri _notificationService;
public async Task Consume(ConsumeContext<AssignSeat> context)
{
if(context.Message.ReservationTime - DateTime.Now < TimeSpan.FromHours(8))
{
// assign the seat for the reservation
}
else
{
// seats can only be assigned eight hours before the reservation
context.ScheduleMessage(context.Message.ReservationTime - TimeSpan.FromHours(8), context.Message);
}
}
}
但是,在本周我们面临的一个用例中,我们需要从 ConsumerContext 外部进行调度,或者只是不想将上下文转发到我们调度的位置。当使用 IBusControl.ScheduleSend 时,我们没有得到任何错误反馈,但我们也没有真正完成任何调度。 在查看了 Mass-Transit 的作用后,发现它从 IBusControl 创建了一个新的调度提供程序。而在 Context 中,它使用 ServiceBusScheduleMessageProvider。
因此,在清理这一点之前,我们现在要做的就是直接调用 ServiceBusScheduleMessageProvider。
await new ServiceBusScheduleMessageProvider(_busControl).ScheduleSend(destinationUri
, scheduleDateTime.UtcDateTime
, Task.FromResult<T>(message)
, Pipe.Empty<SendContext>()
, default);
希望它有意义并且有所帮助。
关于c# - 公共(public)交通 - 如何使用 Azure 服务总线安排消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57387193/
我正在研究使用 Kafka 的可能性 Masstransit在我们的信息系统上。公共(public)交通文档称 Kafka 可以使用,但作为 Rider ;由于必须使用传输,因此除了 Kafka 和
我正在将Azure服务总线与masstransit一起使用,如果消息类类型是从同一个项目继承的,那么它可以完美地工作,但是一旦消息是从另一个.net projet发送的,因此“messageType”
我正在将Azure服务总线与masstransit一起使用,如果消息类类型是从同一个项目继承的,那么它可以完美地工作,但是一旦消息是从另一个.net projet发送的,因此“messageType”
我在使用 MassTransit 3 时遇到以下问题。我正在将消息从 WebApi 发布到后端(作为连续 Web 作业运行)。当后端作业启动时,一切正常并且消息被正确接收。大约 20 分钟后,后端将停
我在使用 MassTransit 3 时遇到以下问题。我正在将消息从 WebApi 发布到后端(作为连续 Web 作业运行)。当后端作业启动时,一切正常并且消息被正确接收。大约 20 分钟后,后端将停
我正在开发一个 Journey Planner 网站。目前在这种情况下有一些简单的事情,即现在该网站只能规划公交路线,公交车的时间目前不可用。所以这意味着我们只有公交路线存储在数据库中,并且由于公交车
这可能是非常基本的,但由于某种原因我无法让它工作。 我正在使用公共(public)交通 Azure 服务总线包 v 5.5.6 连接到 Azure 上的服务总线队列。 已关注 Mass Transit
我在 Azure 上使用 MassTransit 并在总线上配置 MaxConcurrentCalls 时遇到问题。我有一个进程要求一次执行 1 条消息,但我无法使用总线配置来实现这一点。例如,在总线
我已经检查了有关 Scheduling with Azure Service Bus 的文档,但我不清楚如何从“断开的”总线发送消息。 以下是我如何配置在服务器上处理消息的服务: builder.Ad
我已经检查了有关 Scheduling with Azure Service Bus 的文档,但我不清楚如何从“断开的”总线发送消息。 以下是我如何配置在服务器上处理消息的服务: builder.Ad
我不会要求任何人为我构建一个应用程序。我只需要一些入门技巧。所以我想做的是: 能够绘制一些路线/方向,类似于 Google map 已有的有关城市本地交通的功能。为什么?首先,因为谷歌的数据库有点过时
只是做一些快速的尝试,以可能使用消息传递系统来处理良好解耦的工作流程系统中的文件。 人们发现使用上述每个框架的优点和缺点是什么?与使用 WCF 绑定(bind)和/或非 MSMQ 解决方案的手动 MS
我正在使用 Masstransit 和 Azure 服务 .net5。 我有两个应用程序: 网络 API。启动: services.AddMassTransit(x => { x.UsingAz
我正在使用 Masstransit 和 Azure 服务 .net5。 我有两个应用程序: 网络 API。启动: services.AddMassTransit(x => { x.UsingAz
关于 Android 和 Google Directions Service 的一些问题: Android 上是否有使用 Google 的路线服务的 native 方法,或者是否有任何不错的包装器框架
我是 Mass Transit 的新手,我想了解它是否对我的场景有帮助。我正在构建一个使用 CQRS 事件源架构实现的示例应用程序,我需要一个服务总线来将命令堆栈创建的事件分派(dispatch)到查
我是一名优秀的程序员,十分优秀!