クラス RabbitTransactionManager

  • 実装されたすべてのインターフェース:
    SerializableSEInitializingBeanPlatformTransactionManagerResourceTransactionManagerTransactionManager

    public class RabbitTransactionManager
    extends AbstractPlatformTransactionManager
    implements ResourceTransactionManager, InitializingBean
    単一の Rabbit ConnectionFactoryPlatformTransactionManager 実装。指定された ConnectionFactory からスレッドに Rabbit チャネルをバインドし、ConnectionFactory ごとに 1 つのスレッドにバインドされたチャネルを潜在的に許可します。

    このローカル戦略は、外部トランザクション内で Rabbit 操作を実行し、外部トランザクションと同期する代わりになります。この戦略では、たとえばメッセージングとデータベースアクセス間でトランザクションを共有するために、XA トランザクションを提供することはできません。

    後続のチャネル作成で標準の Connection.createChannel(boolean) 呼び出しの代わりに、ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactory, boolean) を介してトランザクション Rabbit リソースを取得するには、アプリケーションコードが必要です。Spring の RabbitTemplate は、スレッドにバインドされたチャネルを自動検出し、自動的に参加します。

    このトランザクションマネージャーのターゲットとして CachingConnectionFactory を使用することを強くお勧めします。CachingConnectionFactory は、すべての Rabbit アクセスに対して単一の Rabbit 接続を使用して、繰り返し接続を作成するオーバーヘッドを回避し、チャネルのキャッシュを維持します。各トランザクションは、独自の個別の Rabbit チャネルを使用しながら、同じ Rabbit 接続を共有します。

    トランザクション同期は、同期の必要性が高い JDBC org.springframework.jdbc.datasource.DataSourceTransactionManager などのデータストアベースの Spring トランザクションマネージャーと一緒に使用される可能性があるため、デフォルトではオフになっています。

    作成者:
    Dave Syer
    関連事項:
    直列化された形式