問題タブ [masstransit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1708 参照

c# - MassTransit とシンプル インジェクター

MassTransit Distributed Application Framework for .NETをレビューしています。Web サイトによると、MassTransit は最初から IoC コンテナーが関与するという概念で構築されており、少数の「主流」の IoC コンテナーのサポート ライブラリを提供しています。(現在) Autofac、StructureMap、Castle Windsor、Ninject、および Unity で利用可能な NuGet パッケージがあります。

パフォーマンス上の理由から、IoC コンテナーとしてSimple Injectorを選択しましたが、MassTransit に Simple Injector のサポートを追加する統合ライブラリが見つかりません。

誰かがこれを試して、動作させて、私を始めるためのコードを利用できましたか?

0 投票する
1 に答える
1114 参照

nservicebus - NServicebusまたはMasstransitをTIBCOEMSで使用する利点

TIBCOEMSを.NETベースのシステムに組み込むための設計を検討しています。私が読んだところによると、ブロスNServiceBusとMassTransitは、TIBCOEMSを輸送通信レイヤーとして使用できます。私の質問は、TIBCO EMSでカスタムC#/。NETライブラリを直接使用するよりもNServiceBusまたはMassTransitを使用する利点は何ですか?

RabbitMQに関するこの回答を知っています:MassTransitはRabbitMQに何を追加しますか?

同じメリットがTIBCOEMSにも適用されますか?

0 投票する
1 に答える
1373 参照

c# - MSMQ 経由の MassTransit が機能していません。なぜですか?

MassTransit のコードは次のとおりです。

サブスクライバー コンソール アプリ:

メッセージ クラス:

パブリッシャー コンソール アプリ:

これら 2 つのコンソール アプリケーションを実行すると、メッセージがコンシューマーによって取得されないようです。何か案は?

乾杯!

0 投票する
2 に答える
594 参照

.net - サービス バス アーキテクチャを使用して、異種システム間でエンティティを関連付け/マッピングするためのいくつかのアプローチは何ですか?

環境内のシステム間でデータとビジネス プロセスを調整するために、企業内でサービス バス アーキテクチャを採用することを検討しています。

私たちの状況は典型的です。請求、在庫などのために内部システムにメッセージを送信する顧客向け Web アプリケーションです。これらのシステムのほとんどまたはすべてに共通するビジネス エンティティがいくつかあります。これらの各システムは、独自のデータベースでこれらのエンティティの独自のバージョンを維持します。

サービス バスの概念に適用すると、顧客の Web ポータルから注文を表すメッセージをバスに発行できます。このメッセージは、関連する各システム (請求、在庫など) によって消費され、対応する顧客レコードが独自のデータベースに作成されます。ただし、これらの内部システムの 1 つが注文ステータスに関するメッセージを発行する必要がある場合、独自のデータベースから注文 ID を保持します。Web ポータルがそのメッセージを消費する必要がある場合、内部システムから送信された注文 ID を Web ポータル データベースに保存された注文 ID と関連付ける方法がわかりません。

同等のエンティティがシステム間でどのように相関しているかを本質的に認識しているシステムは他にないため、システムがメッセージに含まれる ID をそれに関連する ID に変換できるようにするために、何らかのタイプのマッピング メカニズムを導入する必要があるようです。たとえば、あるシステムから別のシステムに ID をマップするデータベース テーブルを作成できます。このテーブルを照会して、ターゲット システムの適切な ID を取得できます。私たちのビジネスは現在、エンティティ集約やその他の「360ビュー」タイプのリポジトリを利用して、共通のエンティティ情報の単一の信頼できるソースとして機能し、そこからユニバーサルIDをすべてのシステム間で受け渡し、使用することはできません.

このようなエンティティ マッピング アプローチをサービス バスの実装に使用することは有効なアプローチですか? もしそうなら、設計を導くための確立されたガイドラインはありますか? そうでない場合は、サービス バスを介した統合を促進するために、システム全体でエンティティをリンクするための代替アプローチについて聞くことに興味があります。

PS: それが役に立てば、私は現在、バスを構築するための MassTransit フレームワークを評価しているので、それに固有の情報があれば、それも大歓迎です。

0 投票する
1 に答える
951 参照

c# - 特定のサブスクライバーにメッセージを再送信する方法は?

バックグラウンド:

MassTransit に基づくメッセージング サブシステムがあります。それはうまく機能し、小さな問題だけで何千ものメッセージを送り出します. これまで、失敗したメッセージは自動的にxxx_errorキューにプッシュされていました。これもうまくいきます。

メッセージ キューを覗いて、失敗したメッセージを再送信するための独自の Web ベースの管理コンソールさえありました。このツールはBusDriverの例に基づいており、MSMQ で直接動作します。メッセージをコピーしてからxxx_errorxxx送信します。

現在の状況:

RabbitMQ への移行を検討しています。より高速でスケーラブルなようです。しかし、もちろん、MSMQ 管理コンソールは役に立たなくなります。RabbitMQ キューで動作する別のバージョンのコンソールを作成するのは好きではありません。むしろ、失敗したメッセージを MSMQ トランスポートに依存しない独自のリポジトリに入れる一般的なルートを使用したいと考えています。

簡単ですね。ここで、具体的な質問があります。

失敗したメッセージのリポジトリには、(他の属性とともに) メッセージ本文とメッセージ サブスクライバー名が含まれます。後で、リポジトリに移動し、メッセージをデシリアライズして、特定のサブスクライバーに再送信できます。

ただし、メッセージが以前に失敗したサブスクライバーではなく、すべてのbus.Publish( msg )サブスクライバーに再度ヒットするため、これは望ましくありません。必要なのは、メッセージを正確に 1 人のサブスクライバーに再送信することです。

これは次の方法で可能と思われます:

また

(使用するトランスポートによって異なります)。このアプローチでは、メッセージは特定のサブスクライバーのみに配信されます。

質問は:

これは推奨されるアプローチでしょうか?どのような代替手段がありますか?

考えられる問題は、このアプローチではおそらく現在のサブスクリプションに関する情報が無視され、メッセージがサブスクライバー キューに直接配信されることです。ただし、サブスクライバーは、このタイプのメッセージをサブスクライブしなくなる可能性があります。したがって、コードはおそらく次のようになります。

これについてコメントをお寄せいただきありがとうございます。

0 投票する
1 に答える
220 参照

msmq - おそらく本当にばかげたMassTransitの誤解

私はMassTransitを初めて使用しますが、理解できないことの1つは次のとおりです。

複数の.netServiceBuses間にバスを作成するにはどうすればよいですか?

このコードを取る:

バスが2つあるので、「Gotmessageon...」が2回表示されると思います。しかし、私は1つしか取得しません。明らかに、これら2つのバスインスタンスを同じ論理バスに結び付けるいくつかのステップがあります。それが何であるかはわかりません。繰り返しになりますが、メッセージを受け取るのは1つだけなので、同じキュー名を指すことはできません。

ありがとう!

編集/解決策

MT Googleグループの助けを借りて、すぐにすぐに解決してくれました... MSMQのマルチキャストビットがインストールされていなかったため、これは期待どおりに機能しませんでした。それらをインストールして、期待どおりに機能しました。

0 投票する
2 に答える
10988 参照

rabbitmq - RabbitMQ を使用した Masstransit の簡単な例

RabbitMQ で MassTransit バスを使いたい。しかし、簡単な例を見つけることができません。私は私を始めるための例を探しています。

私が試したこと。

  1. googled: しかし、ほとんどの例は MSMQ を使用しているか、あまりにも多くの構成オプションを使用しています。
  2. GitHub: MassTransit の GitHub ( https://github.com/MassTransit/MassTransit/tree/master/src/Samples ) を調べましたが、ここの例は負荷が高くなっています。初心者にはとても分かりにくいです。
  3. ドキュメントを読む: ドキュメントを読み始めましたが、読み終えるまでに時間がかかります。誰かが私を始めるための簡単な例へのリンクを共有してくれることを願っています。

ご提案をお願いします。

0 投票する
1 に答える
211 参照

masstransit - サガでビジネス ロジック/動作を持つ MassTransit

サガのイベント ハンドラーには、ビジネス ロジックや動作が組み込まれているようです。
スターバックスの例に言及しています。

これは、例の「サンプル アプリ」の性質のために意図的に行われていますか?
ドメインのロジック/動作は大量輸送に非常に密接に結びついているように見えませんか?

0 投票する
1 に答える
516 参照

nhibernate - MassTransitランタイムサービスがDTCを要求しないようにすることは可能ですか?

MassTransitの使用を開始し、RuntimeServicesを使用してサブスクリプションとタイムアウトを管理する必要があります。私がインストールしている環境は、ファイアウォールを使用してセグメントに分割された外部向けのネットワークです。

現在、RuntimeServicesがインストールされるアプリケーションサーバーとSQL Serverには、分散トランザクションコーディネーター(DTC)が正しく機能するためのRPCポートが開いていません。

私が得ている完全な例外を以下に示しますが、重要な部分はそのように見えますSystem.Transactions.TransactionException: The operation is not valid for the state of the transaction.。DTCが構成されていないため、トランザクションが開始されているとは思いません。

正しいポートを開くように要求できるはずですが、この目的でのトランザクションについてはそれほど心配していないので、そうすることには消極的です。理想的には、MassTransitに伝えたいのですが、分散トランザクションを必要としないのはnHibernateかもしれません。

ところで、私のMSメッセージキューは非トランザクションです。

助けてくれてありがとう、ロブ

完全な例外スタックトレース:

MassTransit.Context.ServiceBusReceiveContext-'System.Action'1[[MassTransit.IConsumeContext, MassTransit, Version=2.6.416.0, Culture=neutral, PublicKeyToken=null]]' threw an exception consuming message 'MassTransit.Context.ReceiveContext' NHibernate.Exceptions.GenericADOException: could not execute query [ select subscripti0_.CorrelationId as Correlat1_1_, subscripti0_.CurrentState as CurrentS2_1_, subscripti0_.ControlUri as ControlUri1_, subscripti0_.DataUri as DataUri1_ from dbo.SubscriptionClientSaga subscripti0_ where subscripti0_.CurrentState=? ] Name:p1 - Value:Active (State) [SQL: select subscripti0_.CorrelationId as Correlat1_1_, subscripti0_.CurrentState as CurrentS2_1_, subscripti0_.ControlUri as ControlUri1_, subscripti0_.DataUri as DataUri1_ from dbo.SubscriptionClientSaga subscripti0_ where subscripti0_.CurrentState=?] ---> System.Transactions.TransactionException: The operation is not valid for the state of the transaction. at System.Transactions.TransactionState.EnlistVolatile(InternalTransaction tx, IEnlistmentNotification enlistmentNotification, EnlistmentOptions enlistmentOptions, Transaction atomicTransaction) at System.Transactions.Transaction.EnlistVolatile(IEnlistmentNotification enlistmentNotification, EnlistmentOptions enlistmentOptions) at NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.EnlistInDis tributedTransactionIfNeeded(ISessionImplementor session) at NHibernate.Impl.AbstractSessionImpl.EnlistInAmbientTransactionIfNeeded() at NHibernate.Impl.AbstractSessionImpl.CheckAndUpdateSessionStatus() at NHibernate.Impl.SessionImpl.get_Batcher() at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean autoDiscoverTypes, Boolean callable, RowSelection selection, ISessionImplementor session) at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) --- End of inner exception stack trace --- at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) ... (elided for brevity!) ...

0 投票する
1 に答える
1331 参照

masstransit - 初心者 - パブリッシングが MassTransit で機能するために必要なコンシューマー キューはありますか

MassTransit と RabbitMQ とキューイングについて理解を深めようとしています (1 日目)

私が持っている質問は、「MT でキューイングが機能するためにコンシューマーが必要かどうかです。私が尋ねる理由は、最初にドメインとプロデューサーを作成しましたが、RabbitMQ 管理ウィンドウにキューに入れられたアイテムが表示されなかったからです。」

コンシューマ キューが作成されると、メッセージがキューに入れられていることがわかります。

私の理解では、Producer は Consumer を認識していないのに、MassTransit がメッセージの発行を開始するために Consumer キューを必要としたのはなぜですか?

プロデューサー

アプリケーション

メッセージ

消費者サービス

コードは Web 上の例を使用して作成されました。

編集また、すべての名前空間が異なるプロジェクトであることを追加したい ドメイン プロデューサー コンシューマー

よろしく、

3月