我想使用rebus实现下面的场景。我正在创建发送者应用程序和一个接收应用程序。会有一个类假设
public class GetPersonRequest
{
public int Id { get; set; }
public string Name { get; set; }
}
public class GetPersonResponse
{
public int Id { get; set; }
public string Name { get; set; }
}
我将用值在队
SimpleInjectorContainerAdapter是否支持通过SimpleInjector容器注册的Sagas,使用下面的代码,我总是得到异常;
类型RebusPlaypen.MyMessageA,无法将RebusPlaypen发送到任何handl
下面的代码演示了这个问题。这是因为我不正确地实现Saga注册,还是SimpleInjectorContainerAdapter不支持这种类型的注册?
using Rebus.Bus;
using Rebus.Config;
using Rebus.Handlers;
using Rebus.Retry.Simple;
using Reb
我有一个MVC应用程序,它有一个自定义登录。登录到set应用程序后,将显示名称设置为在应用程序中使用的用户名。
当我试图连接到一个队列时,我会收到一个异常,即messagequeue无法解析我的用户名。我希望通过ApplicationPool标识或站点标识来连接messagequeue,而不是从应用程序中的登录用户。如何配置rebus以使用不同的用户(将凭据设置为ex.)?
错误给出了下面的堆栈跟踪:
at System.Messaging.AccessControlList.MakeAcl(IntPtr oldAcl)
at System.Messaging.MessageQueue
我们有一个.net核心3.1Web项目运行着Rebus和。
在更新到.NET 5之后,我们不能再使用Rebus向Azure服务总线队列发送消息。没有进行任何代码更改,只更新到.NET 5和最新的Rebus-包(6.6.1)。
var contractMessage = _manager.GetContractMessage();
await _bus.Send(contractMessage);
这会抛出:
Exception
Rebus.Exceptions.RebusApplicationException: Could not send to queue 'sbq-que
是否可以使用Rebus InMemory Transport来实现竞争的消费者,比如示例RabbitScaleout?
上下文:我有一个monolith应用程序,我必须分解和缩放某些部分。我们必须维护monolith部署,同时处理容器/云部署。
我的意图是重构,使用Rebus进行服务之间的协调,使用InMemoryTransport作为monolith,RabbitMQ用于容器化服务。这个能行吗?
下面的代码导致调用和处理程序。
class Program
{
static void Main(string[] args)
{
u
我正在尝试使用Rebus执行请求/回复,但也使用温莎容器NuGet包:
在查看了以下示例之后:
我把下面的例子拼凑在一起:
public class ContactModule : NancyModule
{
public ContactModule(IBus bus)
{
Get["/v1/contact"] = parameters =>
{
var contacts = new List<Contact>();
using (var activator
在Rebus版本1中,我们习惯于将SearchTaskRequest的响应以20个为单位发送给客户端。在升级到Rebus 5.3.1之后,所有的块都会在处理程序(SearchTaskRequest)执行完成后发送。
请检查下面的代码。
public async Task Handle(SearchTaskRequest message)
{
// business logic to get tasks
var taskDtoLsts = taskList.Split(20);
foreach (var taskDtoLst in taskDtoLsts)
是否有在总线启动或关闭时清除队列的配置设置?我需要这样做的原因是,我的集成测试有两个Rebus实例正在运行,如果测试失败,我不希望在随后的测试运行中重新尝试失败的消息。
下面是用于发送消息的集成测试客户端的内容。请注意,RebusHost只是被测试系统的包装器:
using Rebus.Configuration;
using Rebus.Transports.Msmq;
namespace MT.Testing.Integration
{
[TestClass]
public class IntegrationTestFixture
{
privat
我正在使用Rebus向Azure服务总线队列发送消息。对于每条消息,我的消费者的处理程序方法似乎被多次调用。Received.被写入9个单独的日志文件。 制片人: await _bus.Advanced.Routing.Send("some-queue", new SomeMessage()); 消费者: public class SomeMessageHandler : IHandleMessages<SomeMessage>
{
public async Task Handle(SomeMessage message)
{
_l
下面如何调试这两个Handle方法?
我在Visual中在两个Handle方法上设置断点,并将消息发送到Subscriber1队列,但在VS下不调用这两个方法。
public class SomeHandler : IHandleMessages<string>, IHandleMessages<IFailed<string>>
{
readonly IBus _bus;
public SomeHandle(IBus bus)
{
_bus = bus;
}
public async Task Ha
我对退避政策有以下问题:
1它可以同时用于发布者(入队消息)和订阅者(出队消息)吗?
2 Rebus 是否与相同?但是下面的描述提到了空闲时间,这让我有点困惑。
//
// Summary:
// Configures the timespans to wait when backing off polling the transport during
// idle times. backoffTimes must be a sequence of timespans, which indicates the
// time to
我试图在rebus消息处理程序中发布来自catch块的消息,而不影响Rebus的重试机制。
我的意图是,
在消息处理程序中处理消息。在发生错误时,捕获它,并使用相同的总线发布一些错误事件。在发布“抛出”捕获的异常后,自动放置rebus ACK/NACK,以便重试/重发消息。。
我无法实现上述目标,因为如果从rebus消息处理程序抛出异常,该消息将自动标记为重新传递,并回滚整个管道事务。这否定了上面的第二点,因为当事务回滚时,我要发布的消息也会回滚。有什么办法我可以做到这一点,即发布消息以及自动重试能力。我的消息处理程序代码如下。
public Task Handle(SomeMessage m
我正在考虑一种在Rebus中管理失败消息的方法。在我的第二级重试策略中,我希望将消息和异常详细信息保存到数据库中,以便稍后可以查看错误详细信息,并决定是将消息重新发送到要重新处理还是忽略并删除。
在处理程序中,我捕获的细节如下:
public async Task Handle(IFailed<StudentCreated> failedMessage)
{
//Logic to Defer Message with rebus_defer_count not shown
DictionarySerializer dictionarySeria
在我的场景中,我已经在我的应用程序中实现了Rebus (使用azure servicebus) (将使用sagas创建一个PoC )。 问题是,我听到的话题只有azure servicebus,没有花哨的花哨。 我订阅了该主题,将消息移动到我的队列中,并收到以下错误: Rebus.Exceptions.RebusApplicationException: Received message with empty or absent 'rbs2-msg-id' header! All messages must be supplied with an ID . If no ID