public class RSocketOutboundGateway extends AbstractReplyProducingMessageHandler
RSocketRequester
に基づいており、クライアント側の ClientRSocketConnector
またはサーバー側の RSocketRequesterMethodArgumentResolver.RSOCKET_REQUESTER_HEADER
リクエストメッセージヘッダーから取得できます。RSocket 操作は、構成された RSocketInteractionModel
またはそれぞれの SpEL 式によって決定され、実行時にリクエストメッセージに対して評価されます。デフォルトでは、RSocketInteractionModel.requestResponse
操作が使用されます。
Publisher
ベースのリクエストの場合、リクエストメッセージ payload
に存在する必要があります。アップストリーム FluxMessageChannel
を介したフラット化も機能しますが、この方法では特定のリクエストの範囲が失われ、すべての Publisher
イベントが独自のプレーンリクエストで送信されます。
応答が Flux
の場合、リクエストスコープを保持するために Mono
にラップされます。ダウンストリームフローは、メッセージペイロードからこの Flux
を取得し、それ自体でサブスクライブする責任があります。このコンポーネントからの Mono
応答は、ダウンストリーム FluxMessageChannel
からサブスクライブされるか、それ以外の場合は ListenableFuture
に適合されます。
RSocketInteractionModel
, RSocketRequester
AbstractReplyProducingMessageHandler.RequestHandler
IntegrationManagement.ManagementOverrides
messagingTemplate
EXPRESSION_PARSER, logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME
コンストラクターと説明 |
---|
RSocketOutboundGateway(Expression routeExpression) 提供された SpEL 式に基づいてインスタンス化し、実行時に RSocket エンドポイント route をリクエストメッセージに対して評価します。 |
RSocketOutboundGateway(StringSE route, ObjectSE... routeVariables) 提供された RSocket エンドポイント route とオプションの変数に基づいてインスタンス化し、ルートテンプレートを展開します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected void | doInit() |
protected ObjectSE | handleRequestMessage(Message<?> requestMessage) サブクラスはこのメソッドを実装して、リクエストメッセージを処理する必要があります。 |
void | setClientRSocketConnector(ClientRSocketConnector clientRSocketConnector) ClientRSocketConnector.getRequester() によって提供される接続に基づいて、クライアント側のリクエストに対して ClientRSocketConnector を構成します。 |
void | setExpectedResponseType(ClassSE<?> expectedResponseType) RSocket レスポンスのレスポンス型を指定します。 |
void | setExpectedResponseTypeExpression(Expression expectedResponseTypeExpression) Expression を指定して、RSocket レスポンスの型を判別します。 |
void | setInteractionModel(RSocketInteractionModel interactionModel) RSocket リクエスト型の RSocketInteractionModel を構成します。 |
void | setInteractionModelExpression(Expression interactionModelExpression) リクエストメッセージに対して実行時に RSocket リクエスト型の RSocketInteractionModel を評価するように SpEL 式を構成します。 |
void | setMetadataExpression(Expression metadataExpression) SpEL 式を指定して、RSocket リクエストのメタデータをリクエストメッセージに対して Map<Object, MimeType> として評価します。 |
void | setPublisherElementType(ClassSE<?> publisherElementType) リクエスト Publisher 要素の型を構成します。 |
void | setPublisherElementTypeExpression(Expression publisherElementTypeExpression) 実行時にリクエストメッセージに対してリクエスト Publisher 要素型を評価するように SpEL 式を構成します。 |
doInvokeAdvisedRequestHandler, getBeanClassLoader, getIntegrationPatternType, getRequiresReply, handleMessageInternal, hasAdviceChain, onInit, setAdviceChain, setBeanClassLoader, setRequiresReply
addNotPropagatedHeaders, createOutputMessage, getNotPropagatedHeaders, getOutputChannel, isAsync, messageBuilderForReply, produceOutput, resolveErrorChannel, sendErrorMessage, sendOutput, sendOutputs, setAsync, setNotPropagatedHeaders, setOutputChannel, setOutputChannelName, setSendTimeout, shouldCopyRequestHeaders, shouldSplitOutput, updateNotPropagatedHeaders
handleMessage, onComplete, onError, onNext, onSubscribe
buildSendTimer, destroy, getComponentType, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
getThisAs
getBeanName, getComponentName
public RSocketOutboundGateway(StringSE route, @Nullable ObjectSE... routeVariables)
route
とオプションの変数に基づいてインスタンス化し、ルートテンプレートを展開します。route
- 使用する RSocket エンドポイントルート。routeVariables
- ルートテンプレートを展開する変数。public RSocketOutboundGateway(Expression routeExpression)
route
をリクエストメッセージに対して評価します。ルートがテンプレートであり、変数の展開が必要な場合は、この式の評価でそれを行うことをお勧めします。たとえば、適切なロジックを備えた Bean を使用します。routeExpression
- 使用する SpEL 式。public void setClientRSocketConnector(ClientRSocketConnector clientRSocketConnector)
ClientRSocketConnector.getRequester()
によって提供される接続に基づいて、クライアント側のリクエストに対して ClientRSocketConnector
を構成します。サーバー側の場合、リクエストメッセージの RSocketRequesterMethodArgumentResolver.RSOCKET_REQUESTER_HEADER
ヘッダーに RSocketRequester
を指定する必要があります。clientRSocketConnector
- 使用する ClientRSocketConnector
。public void setInteractionModel(RSocketInteractionModel interactionModel)
RSocketInteractionModel
を構成します。interactionModel
- 使用する RSocketInteractionModel
。public void setInteractionModelExpression(Expression interactionModelExpression)
RSocketInteractionModel
を評価するように SpEL 式を構成します。interactionModelExpression
- 使用する SpEL 式。public void setPublisherElementType(ClassSE<?> publisherElementType)
Publisher
要素の型を構成します。publisherElementType
- リクエスト Publisher
要素の型。RSocketRequester.RequestSpec#data(Object, Class)
public void setPublisherElementTypeExpression(Expression publisherElementTypeExpression)
Publisher
要素型を評価するように SpEL 式を構成します。publisherElementTypeExpression
- リクエスト Publisher
要素の型を評価する式。RSocketRequester.RequestSpec#data
public void setExpectedResponseType(ClassSE<?> expectedResponseType)
expectedResponseType
- 期待される型。setExpectedResponseTypeExpression(Expression)
, RSocketRequester.RequestSpec#retrieveMono
, RSocketRequester.RequestSpec#retrieveFlux
public void setExpectedResponseTypeExpression(Expression expectedResponseTypeExpression)
Expression
を指定して、RSocket レスポンスの型を判別します。expectedResponseTypeExpression
- 予期されるレスポンス型の式。RSocketRequester.RequestSpec#retrieveMono
, RSocketRequester.RequestSpec#retrieveFlux
public void setMetadataExpression(Expression metadataExpression)
Map<Object, MimeType>
として評価します。metadataExpression
- メタデータの式。protected void doInit()
AbstractReplyProducingMessageHandler
の doInit
protected ObjectSE handleRequestMessage(Message<?> requestMessage)
AbstractReplyProducingMessageHandler
AbstractReplyProducingMessageHandler
の handleRequestMessage
requestMessage
- リクエストメッセージ。null