标签: nservicebus

NServiceBus和NHibernate - 消息处理程序和事务

根据我的理解,NServiceBus在事务中执行IMessageHandler的Handle方法,如果异常传播出该方法,则NServiceBus将确保消息被放回消息队列(在错误队列之前上升X次)等.所以我们有一个原子操作可以这么说.

现在,如果我在NServiceBus Message Handle方法中,我会做这样的事情

using(var trans = session.BeginTransaction())
{ 

  person.Age = 10;
  session.Update<Person>(person);
  trans.Commit()
}

using(var trans2 = session.BeginTransaction())
{ 

  person.Age = 20;
  session.Update<Person>(person);
  // throw new ApplicationException("Oh no");
  trans2.Commit()
}
Run Code Online (Sandbox Code Playgroud)

这对交易范围有什么影响?就其与Nservicebus交易的关系而言,trans1现在被视为嵌套交易,即使我们没有做任何事情来嫁给他们吗?(如果不是如何链接到NServiceBus的交易?

查看第二个块(trans2),如果我取消注释throw语句,那么NServiceBus事务是否也会回滚trans1?在基本场景中,假设我将上述内容转储到控制台应用程序中,则trans1是独立的,提交,刷新且不会回滚.我想澄清现在我们坐在像NServiceBus这样的其他交易中会发生什么?

以上只是示例代码,我不会直接使用session,更像是通过uow模式.

nhibernate msdtc transactions nservicebus

9
推荐指数
1
解决办法
2721
查看次数

在NServiceBus中换掉RabbitMQ的MSMQ

Udi 在这里提到"人们已经换掉了NServiceBus的MSMQ层并插入了RabbitMQ".

我希望能够在最终目标上做同样的事情,即能够使用AMQP在Mono/Linux上运行使用NServiceBus构建的应用程序.

在潜入之前,虽然我想从可能已经做过这方面的人那里得到一些反馈,以避免陷阱,红鲱鱼等.

或者,如果方法是一项艰巨的任务,最好直接使用RabbitMQ,但如果可能的话,我想坚持使用NServiceBus.

.net msmq nservicebus amqp rabbitmq

9
推荐指数
3
解决办法
6952
查看次数

NServiceBus是ESB吗?

NServiceBus是ESB还是轻量级ESB?或者它更像是具有持久/可靠消息传递的WCF?它看起来更像是一个消息框架而不是ESB.

只是想要一些指针,因为我刚刚开始研究不同的ESB产品以及它们能够做什么或不做什么.

esb nservicebus

9
推荐指数
2
解决办法
6742
查看次数

NServiceBus - IHandleMessages <T>与IMessageHandler <T>有什么关系?

NServiceBus 2.0中的IHandleMessages<T>vs有什么IMessageHandler<T>意义?

一个接口派生自另一个接口,并且似乎没有在T上添加任何新方法或新约束.有可能一个是标记接口,但在评论中没有证据.

.net nservicebus

8
推荐指数
1
解决办法
1894
查看次数

企业服务总线实际使用或示例

我正在研究像NServiceBus这样的.net的ESB事件,有人可以强调哪些现实世界的业务问题可以解决(忘记技术优势)?这用于集成不同的系统.

c# esb nservicebus

8
推荐指数
1
解决办法
3853
查看次数

NServiceBus MSDTC遇到了麻烦

我在这里写这篇文章是希望有人可以帮助我.

我试图NServiceBus在ASP.NET MVC应用程序上实现.我已经完成了每一步,以确保一切正常.我有一个事件将Job ID传递给我的处理程序,然后执行Linq-to-Sql查询并查找作业,然后通过电子邮件发送警报.这个过程非常简单.

但是,我不能为我的生活让MSDTC工作.我继续收到以下错误:

以下是我配置总线的方法:

 Bus = NServiceBus.Configure.WithWeb()
            .Log4Net()
            .DefaultBuilder()
            .XmlSerializer()
            .MsmqTransport()
                .IsTransactional(false)
                .PurgeOnStartup(false)
            .UnicastBus()
                .ImpersonateSender(false)
            .CreateBus()
            .Start();
Run Code Online (Sandbox Code Playgroud)

我没有使用事务,所以我知道甚至不应该调用MSDTC.

我的处理程序代码如下:

public void Handle(ApplyJobMessage message)
    {
        if (message != null)
        {
            using(var context = new MyContext())
            {
                JobPosting posting = (from c in context.JobPostings
                 where c.JobPostingId == message.JobId
                 select c).SingleOrDefault();
            }
Run Code Online (Sandbox Code Playgroud)

端点配置如下:

public class MessageEndpoint : IConfigureThisEndpoint, AsA_Server, IWantToRunAtStartup
Run Code Online (Sandbox Code Playgroud)

一切都很好.当我这样做时,消息正确到达:

Bus.Send(message);
Run Code Online (Sandbox Code Playgroud)

但是,MSDTC错误发生如下所示:

    2011-01-20 00:55:09,744 [Worker.5] ERROR NServiceBus.Unicast.UnicastBus [(null)]
 <(null)> - JobApplicationHandler Failed handling message.
System.Runtime.InteropServices.COMException (0x8004D02A): The MSDTC …
Run Code Online (Sandbox Code Playgroud)

nservicebus

8
推荐指数
3
解决办法
8486
查看次数

NServiceBus在Java世界中等效

是否有任何NServiceBus等效于Java?我不是在寻找更复杂的东西,甚至Mule ESB似乎对我的需求来说太过分了.

.net java nservicebus

8
推荐指数
2
解决办法
3939
查看次数

MessageEndpointMappings如何知道设置订阅与传出消息?

我在App.config中看到了MessageEndpointMappings部分,它让我感到困惑.

有时它看起来像是一个客户端来订阅另一个队列(就像这个一样):

<UnicastBusConfig>
 <MessageEndpointMappings>      
   <add Messages="MyServiceBus.MessageHub.Contracts" Endpoint="MessageHub"/>
 </MessageEndpointMappings>
</UnicastBusConfig>
Run Code Online (Sandbox Code Playgroud)

但有时它似乎用于配置到其他队列的传出消息:

<UnicastBusConfig>
 <MessageEndpointMappings>      
   <add Messages="ServiceBus.MessageHub.InternalMessages" Endpoint="MessageHub"/>
 </MessageEndpointMappings>
</UnicastBusConfig>
Run Code Online (Sandbox Code Playgroud)

但实际上,两者之间没有区别. 那么它如何知道何时设置订阅以及何时设置发送消息?

或者它是否真的一直在做,我只是不使用两者?

nservicebus

8
推荐指数
1
解决办法
4239
查看次数

使用NServiceBus + RabbitMQ对纯RabbitMQ有什么好处?

使用NServiceBus + RabbitMQ对纯RabbitMQ有什么好处?我想它提供了额外的基础设施.但还有什么?

nservicebus rabbitmq

8
推荐指数
2
解决办法
939
查看次数

MessageQueueException(0x80004005):拒绝访问消息队列系统

我有一个在Windows 2003服务器上运行良好的现有应用程序.我一直在将它移动到Windows 2008r2,当应用程序试图访问队列时,它得到以下错误?我的应用程序池的Indentity用户可以完全控制我的消息队列.有没有人对如何解决这个问题有任何想法.我相信这是服务器配置问题.

[MessageQueueException (0x80004005): Access to Message Queuing system is denied.]
   System.Messaging.MQCacheableInfo.get_ReadHandle() +221
   System.Messaging.MessageEnumerator.get_Handle() +70
   System.Messaging.MessageEnumerator.MoveNext(TimeSpan timeout) +93
   System.Messaging.MessageQueue.GetAllMessages() +58
   NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage.Init(IList`1 messageTypes) +124
   NServiceBus.Unicast.UnicastBus.Start(Action`1[] startupActions) +674
   Connector.Service.InitBus() +201
   Connector.OutgoingService..cctor() +9
Run Code Online (Sandbox Code Playgroud)

msmq nservicebus

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

nservicebus ×10

.net ×3

esb ×2

msmq ×2

rabbitmq ×2

amqp ×1

c# ×1

java ×1

msdtc ×1

nhibernate ×1

transactions ×1