public class RabbitTransactionManager extends AbstractPlatformTransactionManager implements ResourceTransactionManager, InitializingBean
ConnectionFactory の PlatformTransactionManager 実装。指定された 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 トランザクションマネージャーと一緒に使用される可能性があるため、デフォルトではオフになっています。
AbstractPlatformTransactionManager.SuspendedResourcesHolderlogger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION| コンストラクターと説明 |
|---|
RabbitTransactionManager()Bean スタイルの使用のために新しい RabbitTransactionManager を作成します。 |
RabbitTransactionManager(ConnectionFactory connectionFactory)ConnectionFactory を指定して、新しい RabbitTransactionManager を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | afterPropertiesSet()ConnectionFactory が設定されていることを確認します。 |
protected void | doBegin(ObjectSE transaction, TransactionDefinition definition) |
protected void | doCleanupAfterCompletion(ObjectSE transaction) |
protected void | doCommit(DefaultTransactionStatus status) |
protected ObjectSE | doGetTransaction() |
protected void | doResume(ObjectSE transaction, ObjectSE suspendedResources) |
protected void | doRollback(DefaultTransactionStatus status) |
protected void | doSetRollbackOnly(DefaultTransactionStatus status) |
protected ObjectSE | doSuspend(ObjectSE transaction) |
ConnectionFactory | getConnectionFactory() |
ObjectSE | getResourceFactory() |
protected boolean | isExistingTransaction(ObjectSE transaction) |
void | setConnectionFactory(ConnectionFactory connectionFactory) |
commit, determineTimeout, getDefaultTimeout, getTransaction, getTransactionSynchronization, invokeAfterCompletion, isFailEarlyOnGlobalRollbackOnly, isGlobalRollbackOnParticipationFailure, isNestedTransactionAllowed, isRollbackOnCommitFailure, isValidateExistingTransaction, newTransactionStatus, prepareForCommit, prepareSynchronization, prepareTransactionStatus, registerAfterCompletionWithExistingTransaction, resume, rollback, setDefaultTimeout, setFailEarlyOnGlobalRollbackOnly, setGlobalRollbackOnParticipationFailure, setNestedTransactionAllowed, setRollbackOnCommitFailure, setTransactionSynchronization, setTransactionSynchronizationName, setValidateExistingTransaction, shouldCommitOnGlobalRollbackOnly, suspend, triggerBeforeCommit, triggerBeforeCompletion, useSavepointForNestedTransactioncloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEcommit, getTransaction, rollbackpublic RabbitTransactionManager()
メモ: インスタンスを使用する前に、ConnectionFactory を設定する必要があります。このコンストラクターは、BeanFactory を介して RabbitTemplate を準備するために使用でき、通常は setConnectionFactory を介して ConnectionFactory を設定します。
このマネージャーは、DataSourceTransactionManager のようなデータストアベースの Spring トランザクションマネージャーと一緒に使用される可能性があるため、デフォルトでトランザクション同期をオフにします。いつでも 1 つのマネージャーのみが同期を実行できます。
public RabbitTransactionManager(ConnectionFactory connectionFactory)
connectionFactory - 使用する ConnectionFactorypublic void setConnectionFactory(ConnectionFactory connectionFactory)
connectionFactory - 設定する connectionFactorypublic ConnectionFactory getConnectionFactory()
public void afterPropertiesSet()
InitializingBean 内の afterPropertiesSet public ObjectSE getResourceFactory()
ResourceTransactionManager 内の getResourceFactory protected ObjectSE doGetTransaction()
AbstractPlatformTransactionManager の doGetTransaction protected boolean isExistingTransaction(ObjectSE transaction)
AbstractPlatformTransactionManager の isExistingTransaction protected void doBegin(ObjectSE transaction, TransactionDefinition definition)
AbstractPlatformTransactionManager の doBegin protected ObjectSE doSuspend(ObjectSE transaction)
AbstractPlatformTransactionManager の doSuspend protected void doResume(ObjectSE transaction, ObjectSE suspendedResources)
AbstractPlatformTransactionManager の doResume protected void doCommit(DefaultTransactionStatus status)
AbstractPlatformTransactionManager の doCommit protected void doRollback(DefaultTransactionStatus status)
AbstractPlatformTransactionManager の doRollback protected void doSetRollbackOnly(DefaultTransactionStatus status)
AbstractPlatformTransactionManager の doSetRollbackOnly protected void doCleanupAfterCompletion(ObjectSE transaction)
AbstractPlatformTransactionManager の doCleanupAfterCompletion