是否重用处理程序来处理另一条消息
public abstract class SomeHandler : IHandleMessages<MyEvent>
{
public IBus Bus { get; set; }
public String Message { get; set; }
public void Handle(T message)
{
Message = "Test";
SomeInstanceMet
是否有任何方法可以配置第二级重试,而不需要对RavenDB进行额外依赖或更改数据库架构
我们现有的系统使用NServiceBus和事务性消息队列,并在.NET Windows服务中自托管NServiceBus。第二级重试利用了NServiceBus中的超时管理功能,您可以将其配置为使用NHibernate而不是RavenDB,如本页底部所述:第二级重试利用了NServiceBus中的超时管理功能,您可以将其配置为使用NHibernate而不是RavenDB,如本页底部所述:谢谢Udi。之所以提出
我在所有环境中运行64位windows 7。通过包含我的两个程序集来隐式注册所有消息在开发过程中起作用,但QA和Prod需要显式注册,否则NService在启动时会引发异常。
有没有人遇到过类似的问题?你有解决办法吗
例外
Source:NServiceBus.Core System.InvalidOperationException - No destination could be found for message type
xyz.Application.Claims.Messaging
我刚刚开始学习NServicebus(以及一般的SOA),对于解决方案的结构和常见的最佳实践,我有一些问题和要点需要澄清:
文档并没有真正解释端点是什么。据我所知,它是一个单位
部署和您的服务将有一个或多个端点。这是正确的吗
对于您正在开发的每个服务,使用一个VS解决方案是否被视为最佳实践?先是消息项目,然后是每个端点的项目,最后是与包含域层的端点共享的项目
据我所知,服务通常由单个组件组成。服务中的任何组件都可以(或者应该)访问同一个数据库,或者每个组件都应该有一个数据库
感谢您提供的任何澄清
情景:
我用10个步骤构建了一个传奇。它正在更新各种系统,整个故事可能需要几分钟才能完成
这个传奇故事是从另一个系统的数据开始的,在这个系统中,用户输入关于客户的信息
我无法看到用户何时在他们的系统中输入完数据,但我正在每隔x分钟从系统中读取带有更改的数据
我的问题是,每当我开始一个关于某个客户的传奇故事时,我需要确保之前关于同一个客户的传奇故事已经结束。
如果用户花费10分钟输入数据,系统可能会在同一客户上启动5个流,并且流可能会超过以前的流,并将数据弄乱
有人知道我如何解决这个问题吗
提前谢
我使用的是NServiceBus v6和NServiceBus.Host。我无法解析messageSession对象。我错过了什么
var container2 = new WindsorContainer();
Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
log4net.Config.XmlConfigurator.Configure(new FileInfo("lo
是否可以使用.NET Framework 3.5运行NServiceBus build 2.0.0.1219,还是必须在.NET Framework 4.0上运行?如果可能的话,是否有一些功能不起作用?Nsb 2.0与net3.5和net4.0都兼容
我已设置发布服务器/订阅服务器,并希望将收到的消息发送到审核队列。这里是我的app.config摘录
<MsmqTransportConfig
InputQueue="MyPublisherInputQueue"
ErrorQueue="error"
NumberOfWorkerThreads="1"
MaxRetries="5"
/>
<UnicastBusConfig
DistributorControlAddress=""
DistributorDataAddres
我使用NServiceBus将消息发布到队列中,并在Host.exe的帮助下将其读入类项目中,但是当我尝试在webapplication中实现相同的消息时,它无法调用处理程序。因此,我无法阅读已发布的消息。
基本上,我想要的是在一个解决方案中有两个web应用程序来发布和阅读对方发布的消息。
请你能帮我一下吗。谢谢。您在启动代码中调用.UnicastBus()之后的.LoadMessageHandlers()了吗?谢谢您的回复。是的,我有LoadMessageHandlers()。。此外,在web
在Wcf集成中,为什么只返回enum有限制?我的解释是,集成只允许您在总线上放置消息。如果将其扩展到枚举之外,则可能会返回更复杂的数据。这将使您进入请求/响应模式,而不是单向异步消息传递模式。如果您需要请求/响应,那么在标准WCF主机中使用标准WCF可能是最佳选择。我的理解是,集成只允许您在总线上放置消息。如果将其扩展到枚举之外,则可能会返回更复杂的数据。这将使您进入请求/响应模式,而不是单向异步消息传递模式。如果您需要请求/响应,那么在标准WCF主机中使用标准WCF可能是最佳选择。感谢您的回复
我有一个奇怪的情况。我有一个NServiceBus(v3)处理程序,处理对业务实体的更新。当该实体处于特定状态时,只能更改该实体的一部分(用于帮助调试的引用字段),而放弃其余更新,然后抛出错误
由于NSB处理程序在其自己的事务作用域中运行,因此引发的异常会阻止记录引用字段更新
我原以为我可以强制一个子TransactionScope,但这似乎只是锁定了数据库,并导致NServiceBus出现超时异常,特别是:
类型异常
'NServiceBus.Unicast.Transport.Transpo
以下是我的设想:
我们有一个中央办公室和多个办公地点(50个,而且还在增加)。我们有目前从中心办公室发布的消息,这些位置的机器订阅这些消息。当前,每个位置都将接收此类型的所有已发布消息。消息具有locationnumber属性,该属性标识特定消息与哪个位置相关,并且在该位置的客户端上,将忽略任何不具有匹配locationnumber的消息。我想做的是根据订阅者所在的位置动态创建一个消息类,并让它订阅该类型的消息。然后,发布者将检查数据并生成“相同”的动态消息类(不确定是否匹配,在这个过程中还没有
抱歉,如果这个问题有点幼稚
我们有大量设备(>100000)向主机发送事件,我们希望不同的客户应用程序能够从特定设备接收事件
一个具体的例子是温度读数,一个客户应用程序可能需要一个地理区域内所有设备的读数,而另一个客户应用程序可能需要安装在特定设备(如冷冻食品区域)但在多个地理区域内的所有设备的读数
然而,另一个客户应用程序只对他们制造的设备感兴趣
i、 e.这些将是重叠的设备“集合”
也许这只是“物联网”的一个例子
我相信NSB中的pub/sub方法使用“消息类型”来标识目标订阅,但我怀疑这些
请参见以下屏幕截图:
在我的端点项目中,我引用了ServiceControl SagaAudit插件,因此在部署时,必要的dll会按预期进行部署。您可以在屏幕截图的左窗格中看到这一点,该屏幕截图显示了“我的已部署文件夹”中文件的视图,NServiceBus.host.exe正从该文件夹中成功运行处理消息的程序
然而ServiceInsight中的Saga视图抱怨我没有必要的ServiceControl插件
我遗漏了什么?您需要saga audit插件来查看saga数据,请参阅以获取有关nuge
我正在运行来自的示例,它们被破坏了,所以我开始调试代码并发现了错误。然后,我看了一下master中的代码,它完全不同(sansbug)。我们应该查看哪个存储库?NServiceBus.com向您指出了Source Forge,但GitHub似乎正在进行更多的活动。GitHub是NServiceBus的当前主服务器
在这种情况下,我有一个服务订阅事件消息,并在消息到达时执行一些工作。有一类事件可以在引用相同底层数据的多个事件的短突发中到达。我希望能够将相关事件的处理推迟一小段时间,以便我只对每批相关事件进行一次计算,而不是对每个单独事件进行响应。是否有某种模式可以让我在一段时间内收集相关事件,然后一次性处理它们?我想saga+超时可能可以实现这一点,但不确定这是否是一个合适的用途
谢谢 > P>是的,一个传奇可以是一种方式——但是考虑到SAGA持久性(NHiBiess在当前版本的DB上,下一版本中的Rave
我正在使用NSB3.2.2,在建立分销商时遇到了一个问题。
我有一个出版商和两个负载平衡的工人
工作流程如下所示:
发布者向Service1分发服务器发送消息
服务1分发服务器将其发送给服务1工作人员
Service1工作者向Service2分发服务器发送消息
Service2分发服务器将其发送给Service2 worker
Service2工作程序不执行总线应答(响应消息)
现在的问题是Service2工作人员的回复应该去哪里
我观察到,有时它会进入Service1分发服务器输入队列,有
我有下面一行代码来获取IHandleMessages类中的消息头
IDictionary headers=_bus.CurrentMessageContext.headers;
我收到了错误信息
总线未实现ImanageMessageHeader
我本以为这是默认配置的。有人知道如何实现IManageMessageHeaders吗?我是否需要更改端点的配置方式
public class EndpointConfig : IConfigureThisEndpoint
{
public
我是NServiceBus的新手,所以可能我在这里问了一些非常愚蠢的问题,但是有没有一种方法可以让NServiceBus不停止发送响应处理程序失败的消息而发送的任何消息
让我用一个简单的例子来解释
假设我有一个OrderPaidEvent,它有一个执行以下操作的处理程序:
寻找顾客
启动数据库事务
将客户更新为好客户
发送CustomerUpgradedToGoodCustomerEvent消息
提交数据库事务
很简单,世界上一切都很好。现在,几个月后,另一个人认为,当订单被支付时,发送一封电子
我正在使用一个医疗系统,该系统(除其他外)将处理患者数据的更新
我们将尝试将我们的系统扩展到多台机器,以提高性能
但是,我担心分发消息会导致更新顺序错误
以下是一个例子:
我的MSMQ上的前两条消息是患者的更新请求。第一个将中间名改为“鲍勃”,第二个将中间名改为“比尔”。(所以最后中间名应该是“比尔”。)
我有一个分发器设置,可以向MachineA和MachineB发送消息。两者都能够处理消息,但MachineA的速度要慢得多(或者有其他进程将其加载下来,或者由于其他原因速度较慢)
如果分销商将
我想在NServiceBus消息转换器中注入依赖项。。。由于变异子的生存期由NServiceBus控制(NSB需要一个无参数构造函数),构造函数注入将无法工作
有什么想法吗
更新:以下是代码:
public class AddTransactionInformationToOutgoingHeaders :
IMutateOutgoingTransportMessages,
INe
NServiceBus至少在RavenDB persistens存储中删除Saga数据(当此标记完成时);这是从传说本身被称为
当传奇故事完成或终止时,是否有一种内置的方式来存档传奇故事数据?出于可追溯性的原因,我们需要这样一个功能。您可以在saga数据中放置一个内部标志,将其设置为complete,而不是调用MarkAsComplete,并在saga处理程序中检查它
这样,如果你愿意,你可以重新开始一个传奇故事,你的传奇故事将永垂不朽
这有意义吗?使用特定服务平台的其余部分时,将自动审核传奇中
我有一个NSB端点,它每“n”分钟轮询一个数据库,将一些数据发送到其他端点。我正在使用内置的调度程序。建议只在调度程序代码中执行“Bus.SendLocal”,并让处理程序调用数据库。调度程序只是在消息醒来时对其进行排队,处理程序会像处理任何其他消息一样对其进行处理。看起来更干净,一切正常
我遇到的问题:
ServiceInsight捕获了所有的消息,它现在充满了太多的唤醒消息,每n分钟一条
问题:
是否有办法关闭对特定消息类型或任何其他推荐解决方案的审核?目前,NServiceBus不支持此功
是否可以通过nServiceBus重播所有失败的消息,而不使用ServiceControl/ServicePulse
我正在使用NServiceBus.Host.exe来承载我们的端点。我们的ServiceControl/ServicePulse数据库已损坏。我能够重新创建它,但现在我在SQL数据库中找到了一些失败的消息,这些消息在ServicePulse中是不可见的。据我所知,在特定堆栈中没有任何内置的东西可以解决这个问题
当我以前遇到类似的问题时,我通常会设置一个控制台应用程序,将一些命令发
我有一个端点,它有一个执行FTP工作的消息处理程序。
由于ftp过程可能需要一些时间,因此我将ftp方法封装在TransactionScope中,并使用TransactionScope选项.Suppress来防止事务超时异常
这样做消除了超时异常,但是处理程序被触发了5次
(重试次数在我的配置文件中设置为5)
这些文件是通过ftp传输的,但它们只是通过ftp传输了5次
处理程序看起来好像在10或11分钟后重新启动
一些测试代码如下所示:
public void Handle(FtpMessage
我有一个相当简单的发布/订阅设置,在我们的开发人员机器上运行良好,但当我部署到测试服务器时,它会对所有消息抛出此错误:
System.NullReferenceException: Object reference not set to an instance of an object.
at NServiceBus.Unicast.UnicastBus.HandleTransportMessage(IBuilder childBuilder, TransportMessage msg)
我有一个运行NServiceBus 3.3.3的自托管(IIS)NServiceBus进程
我将在IIS中创建另一个进程(在同一台机器上),该进程将从3.3.3版本接收消息。我想让新版本成为4.0.4(最新版本)
有人知道我从3.3.3发送到4.0.4是否会遇到兼容性问题吗?应该不会有任何问题。
版本N+1在导线上始终向后兼容
如果您发现任何问题,请在Github中提出,我们将解决它
在使用生产概要文件将我的服务部署为主服务之后,我没有看到在初始化中启用超时管理器。我什么都试过了,但没有成功
我安装服务的方式是:
NServiceBus.Host.exe/install/serviceName:BusinessServices
/显示名称:BusinessServices/说明:BusinessServices
/用户名:machinename\Administrator/密码:pass
NServiceBus.Master NServiceBus.production
en
因此,使用GO管道部署项目升级,包括最新版本的NServiceBus(3.2.7),我似乎在创建队列时遇到了某种权限问题,一旦手动创建,服务似乎仍然无法从中读取
这是我的端点配置
public class EndpointConfiguration
: IConfigureThisEndpoint, AsA_Server
, IWantCustomInitialization, IWantCustomLogging
{
public
我是N服务巴士的新手。
我有一个关于错误队列的问题。
在我的IHandleMessages类中,抛出了一个异常。
但是,该消息不会发送到错误队列。
日志文件中没有异常信息。
即使在声明try-catch块时,try-catch块似乎也不会捕获异常
有人能帮我澄清一下NserviceBus中的错误队列和异常处理吗?
谢谢可能正在重试该消息,并且第二次尝试成功包括您的配置和初始化代码。有关详细信息,请尝试此操作。
我正在MVC4应用程序中运行NSB 3.2.8自托管,这是我的配置:
Configure.With()
.DefiningMessagesAs(t => t.Namespace != null && namespaces.Contains(t.Namespace))
.CastleWindsorBuilder(container)
.XmlSerializer()
.Log4Net()
.MsmqTransport()
.IsTransactional(true)
将NserviceBus 3.3与Raven一起用于订阅持久性
我正在创建一个原型应用程序,它将在我们的测试环境中使用来自发布者的消息。该应用程序只会使用几个星期,在这一点上,它可能(基本上)以当前的形式被丢弃
我不希望发布服务器继续向此订阅服务器的出站队列发送消息。实际上,我希望它的存在完全从系统中移除
如何从系统中删除此订阅服务器的所有信息?要执行此操作,您需要手动管理订阅
请查看,特别是,您还需要告诉总线,此示例应提供执行此操作所需的所有代码。指向PubSub文章的链接已断开。这是一个新的
是否有Visual Studio 2012 NServiceBus系统项目模板?我可以在install tools文件夹中看到VS2010的一个版本:/NServiceBus/v3.3.5/tools/NServiceBus studio.vsix
我搜索了努吉,但什么也没找到。VS2012模板的开发正在进行中吗?针对Visual Studio 2012的NServiceBus Studio的开发已进入最后阶段。
一个公开的测试版将在不久的将来发布 针对Visual Studio 2012的NS
我在生产环境中使用DTC时遇到一些技术问题。
是否可以在不使用DTC的情况下使用重试功能?是。此功能不依赖于使用DTC。要仅禁用DTC,您需要将其添加到端点配置中:
Configure.Transactions.Advanced(settings => settings.DisableDistributedTransactions());
听起来很合理,但是-当我使用configure.Transactions.Disable()配置客户端时;我看不到雷蒂在行动。知道为什么吗?这可能取决
我们正在考虑使用ActiveMQ作为NServiceBus的消息传输,而不是MSMQ,以使Java端点能够通过ActiveMQ直接与.NET端点集成
默认情况下,NServiceBus端点在涉及MSMQ和SQL Server的分布式事务中运行。当消息传输为ActiveMQ时,NServiceBus中是否有相同级别的分布式事务支持?与MSMQ相比,将ActiveMQ与NServiceBus结合使用是否还有其他缺点?摘自David Boike的书:
与MSMQ一样,ActiveMQ支持DTC,以确保
当前设置
我们有一个UI(远不止一个UI,但这并不相关),我们有两个负载平衡的应用服务器。这样的UI将与别名对话,别名后面是两个负载平衡器应用程序服务器。
应用服务器也是自托管NServiceBus端点。处理当前请求的应用程序服务器(可以是应用程序服务器1或应用程序服务器2)能够使用自托管的NServiceBus执行以下操作:
本地发送消息(这是可以在任何时间运行的计算)
时间,不管是谁触发的,它只是一个触发
(进行计算)
向服务器上的发布服务器发送命令
服务盒(发布者将新事件推送到辅助程序1
我有一个按名称唯一标识的产品列表。每种产品都有自己的订购流程。我希望每个产品订购流程都由一个传奇故事来定义。有没有一种方法可以让我用不同的传说来处理每一种产品?我可以为此使用端点吗?总线发送(产品名称、消息)是否有效
我希望这是有意义的。简短的回答是不,你不能直呼传奇的名字。但是,您可以使用标准消息轻松地做到这一点。您只需创建一个新的更具体的消息,该消息继承自产品消息基类。然后,让特定于产品的传奇故事以该消息类型开始。您可以执行一些定制的传奇故事查找逻辑(如上所述)来控制这一点。有关更完整的示例
有没有办法用NServiceBus消息创建PCL(就像您可以为ServiceStack创建PCL一样)?我试图添加NuGet包,但我似乎不支持Xamarin
Install-Package NServiceBus
Install failed. Rolling back...
Package 'NServiceBus 5.2.5' does not exist in project 'RZ.Services.ServiceModel'
Install-Package : Could not i
我正在安装一个使用SQL Server传输的NServiceBus4.x端点。运行安装程序时(通过Octopus Deploy,默认情况下作为本地系统运行)
\NServiceBus.Host.exe/install NServiceBus.Production/serviceName=$name/username:$username”/password:$password
…我得到一个错误:
未能执行安装程序:System.Data.SqlClient.SqlException(0x80131
发布者配置
<!-- 1. In order to configure remote endpoints use the format: "queue@machine"
2. Input queue must be on the same machine as the process feeding off of it.
3. Error queue can (and often should) be on a different machine.
我们正在使用自己的主机,希望指定一个要首先触发的处理程序。我们有一个消息验证处理程序,希望在Saga处理程序之前启动它。我们已经尝试使用下面的代码设置顺序,但是查看日志,我们的saga消息处理程序首先启动,然后验证处理程序启动。他们被难住了,想知道这件事是否与此有关?
如果你有任何想法,请告诉我们
此处的文档:
NServiceBus.Configure.With()
...
.UnicastBus()
.LoadMessageHandlers()
我们的代码如下所示:
var bus =
我们有一个分发服务器/发布服务器(NSB社区版本,位于域上,但最近由于一些问题更改为工作组模式),它与两个不同服务器(位于域上)上的两个工作人员通信。突然之间,它没有向其中一名工人发送任何作品,因为该工人发送了几封未经出版商确认的确认信
请提供帮助-这是NSB主机中的错误还是我在这里遗漏了什么?最终找到了问题,它与Nservicebus无关,而是与网络有关。
由于某些安全/防火墙问题,服务器无法相互通信
解决方案是:在发布服务器(分发服务器)中添加订阅服务器(工作服务器)的主机条目解决了同样的问
我们有一个信息,“人”。使用PersonHandler进行更新时,所有这些都可以正常工作。但是,现在我们需要添加一个新的人员。(以前,添加新人是通过CRM系统完成的,因此我们不必担心插入)。现在我们需要将该功能转移到新的NSB系统中。一旦添加了个人,我需要将该个人的GUID传递到前端。要做到这一点,我应该在NSB中使用请求/响应模型,还是使用普通的ADO.Net代码?如果我使用后者,我们将在客户端使用ADO.Net插入代码,并在NSB中进行更新。这对我来说并不合适
这可能是一个愚蠢的问题,但如果
我们在web应用程序中使用NServiceBus,最近发现,尽管处于连接状态,但有时仍有一些消息处于出站队列中,但从未离开。删除它们的最快解决方案是重新启动MSMQ服务。我遇到的一个问题是,当重新启动或停止MSMQ服务时,CPU会跳到100%
有没有人遇到过这种情况,并找到了防止这种高负荷的方法。我不喜欢仅仅因为停止服务而导致停机的想法?我知道的一种方法是使用仅发送模式,但这并不理想
更新:
global.asax应用程序启动中使用的配置代码:
IBus bus = Configure
我想知道这是否可以更改NSB创建的表的默认模式。
我尝试添加此密钥:
<add key="NServiceBus/Persistence/NHibernate/default_schema" value="other"/>
但这似乎只用于设置用于读取的模式,而不是用于创建表的默认模式。有什么方法可以设置它吗?是的,这是我正在修复的一个bug
此修复程序将很快推出。
很抱歉给您带来不便,但目前唯一的解决方法是从当前创建的内容生成TSQL,然后手动更新架构并重做表。我提出了一个问题
我对NSB传奇的表现有点不满。我们有一个单独的传奇故事来编排长时间运行的会话。Saga向不同的处理器发送大量消息,然后得到回复。
我看到sagas队列包含大量传入消息。每个消息的处理速度都非常快,但在处理下一个消息之间存在延迟。以下是日志文件的一部分:
16:26:42 [14][DEBUG] Finished handling message.
16:26:46 [15][DEBUG] ChildContainerBehavior
16:26:46 [15][DEBUG] Messag
我试图使用NServiceBus订阅Azure主题上的消息,但我很难构造连接字符串
特定网站声明我的连接字符串应如下所示:
Endpoint=sb://myNameSpace.servicebus.windows.net/;SharedSecretIssuer=owner;SharedSecretValue=123123123123123123
然而,我不知道“ShadedSecretIssuer”是谁,Azure也不需要“SharedAccessKeyName”。Azure说我的连接字符串应
伙计们
我正在尝试将消息发送到服务器并在客户端获得响应,同时我正在尝试使用相同的端点在服务器上发布另一条消息
我在客户端没有得到响应,但订阅者成功地获得了发布的消息
服务器端代码:
if (!someCondition)
{
_bus.Reply(new BookingStatus(message, Status.Occupied));
}
else
{
_bus.Reply(new
给定以下事件,是否有方法订阅具有特定属性值的事件?例如,仅订阅OperationTypeId为3的事件
public interface IServerEvent : IEvent
{
int OperationTypeId { get; set; }
string SomeValue { get; set; }
}
我正在使用NServiceBus 6.0.0
这种情况的用例是可以在服务器上创建新的OperationType,因此我们需要一个“通用”事件结构。我希望订阅者能够
我开始学公共汽车了
我读到的第一件事是我们展示了NServiceBus如何保证可靠性和可扩展性,OK:)
从NServiceBus网站下载的RetailDemo教程解决方案
运行它,它会打开3个控制台应用程序ClientUI、Sales和Billing。
它应该从ClinetUI向销售和计费部门发送一条消息
然而,销售应用程序在这些细节上失败了(下次即使刚启动也无法继续工作):
问题-怎么了?访问未被拒绝,没有任何内容保存此文件夹或文件
如果他们的演示解决方案失败,我可以做些什么来继续学习这个框
1 2 3 4 5 6 ...
下一页 最后一页 共 21 页