2017-10-24 12 views
1

Bakground: jmsメッセージでバッチジョブを起動し、websocket経由でクライアントにフィードバックを送ろうとしています。int:outbound-websocket-adapterがMESSAGEフレームを送信しています。私はSENDフレームを期待しました

問題: サーバーはクライアントからメッセージフレームを受信しましたが、SENDフレームが必要です。その結果、トピック(/ topic/export-status) のサブスクライバはjobExectionステータスを受け取りません。

質問: これをどのように修正すればよいですか? >メッセージドリブンdapter - - >ジョブ要求変圧器にJSM - >仕事起動ゲートウェイ - >アウトバウンド用WebSocket

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration" xmlns:jms="http://www.springframework.org/schema/jms" xmlns:int-jms="http://www.springframework.org/schema/integration/jms" 
    xmlns:batch="http://www.springframework.org/schema/batch" xmlns:batch-int="http://www.springframework.org/schema/batch-integration" xmlns:int-websocket="http://www.springframework.org/schema/integration/websocket" xmlns:websocket="http://www.springframework.org/schema/websocket" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket.xsd 
     http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms.xsd 
     http://www.springframework.org/schema/integration/websocket http://www.springframework.org/schema/integration/websocket/spring-integration-websocket.xsd 
     http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd 
     http://www.springframework.org/schema/batch-integration http://www.springframework.org/schema/batch-integration/spring-batch-integration.xsd 
     http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd"> 

    <int:channel id="jmsInChannel"></int:channel> 
    <int:channel id="jmsOutChannel"></int:channel> 
    <int:channel id="fileExportJobRequests"></int:channel> 
    <int:channel id="fileExportJobChannel"></int:channel> 
    <int:channel id="errorChannel"></int:channel> 

    <int:publish-subscribe-channel id="wsStatusChannel" /> 

    <int-jms:message-driven-channel-adapter id="jmsIn" destination-name="inQueue" channel="jmsInChannel" error-channel="errorChannel" /> 


    <int:router input-channel="jmsInChannel" expression="payload.job"> 
    <int:mapping value="export" channel="fileExportJobChannel" /> 
    </int:router> 

    <int:chain input-channel="fileExportJobChannel" output-channel="fileExportJobRequests"> 
    <int:header-enricher> 
     <int:reply-channel ref="nullChannel" /> 
    </int:header-enricher> 
    <int:transformer id="prepareExportJobLaunchRequest"> 
     <bean class="com.bodastage.jobs.fileexport.JmsMessageToExportJobRequest"> 
     <property name="job" ref="fileExportJob" /> 
     </bean> 
    </int:transformer> 
    </int:chain> 

    <batch-int:job-launching-gateway request-channel="fileExportJobRequests" reply-channel="jmsOutChannel" /> 

    <int:object-to-string-transformer input-channel="jmsOutChannel" output-channel="wsStatusChannel" /> 

    <bean id="webSocketClient" class="org.springframework.web.socket.client.standard.StandardWebSocketClient" /> 

    <bean id="stompSubProtocolHandler" class="org.springframework.web.socket.messaging.StompSubProtocolHandler" /> 

    <int-websocket:client-container id="clientWebSocketContainer" client="websocketStompClient" uri="http://localhost:8080/websocket" auto-startup="true" /> 


    <int:chain input-channel="wsStatusChannel"> 
    <int:header-enricher default-overwrite="true"> 
     <int:header name="#{T(org.springframework.messaging.simp.SimpMessageHeaderAccessor).DESTINATION_HEADER}" value="/topic/export-status" /> 

    </int:header-enricher> 

    <int-websocket:outbound-channel-adapter container="clientWebSocketContainer" id="outboundWeSocketAdapter" default-protocol-handler="stompSubProtocolHandler"> 
    </int-websocket:outbound-channel-adapter> 
    </int:chain> 

    <int:logging-channel-adapter id="logger" channel="wsStatusChannel" level="INFO" log-full-message="true" /> 
</beans> 
JMSのメッセージ:私は、次の春の統合の流れを持っている私が何か

をしないのです

クライアントのログ:

Consumer [ActiveMQMessageConsumer { value=ID:LAPTOP-I5BST4S0-52358-1508768644545-1:1:1:1, started=true }] of session [ActiveMQSession {id=ID:LAPTOP-I5BST4S0-52358-1508768644545-1:1:1,started=true} [email protected]] did not receive a message 
2017-10-23 17:35:03.176 DEBUG 14984 --- [sIn.container-1] o.s.j.l.DefaultMessageListenerContainer : Received message of type [class org.apache.activemq.command.ActiveMQMapMessage] from consumer [ActiveMQMessageConsumer { value=ID:LAPTOP-I5BST4S0-52358-1508768644545-1:1:1:1, started=true }] of session [ActiveMQSession {id=ID:LAPTOP-I5BST4S0-52358-1508768644545-1:1:1,started=true} [email protected]] 
2017-10-23 17:35:03.177 DEBUG 14984 --- [sIn.container-1] .i.j.ChannelPublishingJmsMessageListener : converted JMS Message [ActiveMQMapMessage {commandId = 5, responseRequired = true, messageId = ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, originalDestination = null, originalTransactionId = null, producerId = ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1, destination = queue://inQueue, transactionId = null, expiration = 0, timestamp = 1508769303167, arrival = 0, brokerInTime = 1508769303167, brokerOutTime = 1508769303171, correlationId = null, replyTo = null, persistent = true, type = null, priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = [email protected], marshalledProperties = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = null, readOnlyProperties = true, readOnlyBody = true, droppable = false, jmsXGroupFirstForConsumer = false} ActiveMQMapMessage{ theTable = {name=Missing externals, format=csv, pk=1, job=export, file_name=missing_externals_20171023053503.csv, query=SELECT * FROM networkaudit.rule_missing_externals} }] to integration Message payload [{file_name=missing_externals_20171023053503.csv, query=SELECT * FROM networkaudit.rule_missing_externals, name=Missing externals, format=csv, pk=1, job=export}] 
2017-10-23 17:35:03.178 DEBUG 14984 --- [sIn.container-1] o.s.integration.channel.DirectChannel : preSend on channel 'jmsInChannel', message: GenericMessage [payload={file_name=missing_externals_20171023053503.csv, query=SELECT * FROM networkaudit.rule_missing_externals, name=Missing externals, format=csv, pk=1, job=export}, headers={jms_redelivered=false, jms_destination=queue://inQueue, id=eb77658f-c22d-335f-14a2-23facb7aab13, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303177}] 
2017-10-23 17:35:03.178 DEBUG 14984 --- [sIn.container-1] o.s.i.router.ExpressionEvaluatingRouter : org.springframework.integration.config.RouterFactoryBean#0 received message: GenericMessage [payload={file_name=missing_externals_20171023053503.csv, query=SELECT * FROM networkaudit.rule_missing_externals, name=Missing externals, format=csv, pk=1, job=export}, headers={jms_redelivered=false, jms_destination=queue://inQueue, id=eb77658f-c22d-335f-14a2-23facb7aab13, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303177}] 
2017-10-23 17:35:03.178 DEBUG 14984 --- [sIn.container-1] o.s.integration.channel.DirectChannel : preSend on channel 'fileExportJobChannel', message: GenericMessage [payload={file_name=missing_externals_20171023053503.csv, query=SELECT * FROM networkaudit.rule_missing_externals, name=Missing externals, format=csv, pk=1, job=export}, headers={jms_redelivered=false, jms_destination=queue://inQueue, id=eb77658f-c22d-335f-14a2-23facb7aab13, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303177}] 
2017-10-23 17:35:03.178 DEBUG 14984 --- [sIn.container-1] o.s.i.handler.MessageHandlerChain  : org.springframework.integration.handler.MessageHandlerChain#0 received message: GenericMessage [payload={file_name=missing_externals_20171023053503.csv, query=SELECT * FROM networkaudit.rule_missing_externals, name=Missing externals, format=csv, pk=1, job=export}, headers={jms_redelivered=false, jms_destination=queue://inQueue, id=eb77658f-c22d-335f-14a2-23facb7aab13, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303177}] 
2017-10-23 17:35:03.179 DEBUG 14984 --- [sIn.container-1] o.s.i.t.MessageTransformingHandler  : org.springframework.integration.handler.MessageHandlerChain#0$child#0.handler received message: GenericMessage [payload={file_name=missing_externals_20171023053503.csv, query=SELECT * FROM networkaudit.rule_missing_externals, name=Missing externals, format=csv, pk=1, job=export}, headers={jms_redelivered=false, jms_destination=queue://inQueue, id=eb77658f-c22d-335f-14a2-23facb7aab13, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303177}] 
2017-10-23 17:35:03.179 DEBUG 14984 --- [sIn.container-1] o.s.i.t.MessageTransformingHandler  : org.springframework.integration.handler.MessageHandlerChain#0$child.prepareExportJobLaunchRequest.handler received message: GenericMessage [payload={file_name=missing_externals_20171023053503.csv, query=SELECT * FROM networkaudit.rule_missing_externals, name=Missing externals, format=csv, pk=1, job=export}, headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=9e4ae8c9-2148-6aea-cb94-d38c573a8622, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303179}] 
2017-10-23 17:35:03.184 DEBUG 14984 --- [sIn.container-1] o.s.integration.channel.DirectChannel : preSend on channel 'fileExportJobRequests', message: GenericMessage [payload=JobLaunchRequest: fileExportJob, parameters={query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}, headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=4f07fb9a-ae56-942f-d9c8-f9a68a6fb57f, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303184}] 
2017-10-23 17:35:03.217 INFO 14984 --- [sIn.container-1] o.s.b.c.l.support.SimpleJobLauncher  : Job: [SimpleJob: [name=fileExportJob]] launched with the following parameters: [{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}] 
2017-10-23 17:35:03.260 INFO 14984 --- [sIn.container-1] o.s.batch.core.job.SimpleStepHandler  : Executing step: [step] 
2017-10-23 17:35:03.365 INFO 14984 --- [sIn.container-1] o.s.b.c.l.support.SimpleJobLauncher  : Job: [SimpleJob: [name=fileExportJob]] completed with the following parameters: [{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}] and the following status: [COMPLETED] 
2017-10-23 17:35:03.366 DEBUG 14984 --- [sIn.container-1] o.s.integration.channel.DirectChannel : preSend on channel 'jmsOutChannel', message: GenericMessage [payload=JobExecution: id=393, version=2, startTime=Mon Oct 23 17:35:03 EAT 2017, endTime=Mon Oct 23 17:35:03 EAT 2017, lastUpdated=Mon Oct 23 17:35:03 EAT 2017, status=COMPLETED, exitStatus=exitCode=COMPLETED;exitDescription=, job=[JobInstance: id=370, version=0, Job=[fileExportJob]], jobParameters=[{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}], headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=d60873a9-ca67-a0c9-4b72-0296c538a5f8, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303366}] 
2017-10-23 17:35:03.367 DEBUG 14984 --- [sIn.container-1] o.s.i.t.MessageTransformingHandler  : org.springframework.integration.transformer.MessageTransformingHandler#0 received message: GenericMessage [payload=JobExecution: id=393, version=2, startTime=Mon Oct 23 17:35:03 EAT 2017, endTime=Mon Oct 23 17:35:03 EAT 2017, lastUpdated=Mon Oct 23 17:35:03 EAT 2017, status=COMPLETED, exitStatus=exitCode=COMPLETED;exitDescription=, job=[JobInstance: id=370, version=0, Job=[fileExportJob]], jobParameters=[{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}], headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=d60873a9-ca67-a0c9-4b72-0296c538a5f8, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303366}] 
2017-10-23 17:35:03.368 DEBUG 14984 --- [sIn.container-1] o.s.i.channel.PublishSubscribeChannel : preSend on channel 'wsStatusChannel', message: GenericMessage [payload=JobExecution: id=393, version=2, startTime=Mon Oct 23 17:35:03 EAT 2017, endTime=Mon Oct 23 17:35:03 EAT 2017, lastUpdated=Mon Oct 23 17:35:03 EAT 2017, status=COMPLETED, exitStatus=exitCode=COMPLETED;exitDescription=, job=[JobInstance: id=370, version=0, Job=[fileExportJob]], jobParameters=[{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}], headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=ebbc1358-f43f-329d-da30-14618eb47552, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303367}] 
2017-10-23 17:35:03.368 DEBUG 14984 --- [sIn.container-1] o.s.i.handler.MessageHandlerChain  : org.springframework.integration.handler.MessageHandlerChain#1 received message: GenericMessage [payload=JobExecution: id=393, version=2, startTime=Mon Oct 23 17:35:03 EAT 2017, endTime=Mon Oct 23 17:35:03 EAT 2017, lastUpdated=Mon Oct 23 17:35:03 EAT 2017, status=COMPLETED, exitStatus=exitCode=COMPLETED;exitDescription=, job=[JobInstance: id=370, version=0, Job=[fileExportJob]], jobParameters=[{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}], headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=ebbc1358-f43f-329d-da30-14618eb47552, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303367}] 
2017-10-23 17:35:03.368 DEBUG 14984 --- [sIn.container-1] o.s.i.t.MessageTransformingHandler  : org.springframework.integration.handler.MessageHandlerChain#1$child#0.handler received message: GenericMessage [payload=JobExecution: id=393, version=2, startTime=Mon Oct 23 17:35:03 EAT 2017, endTime=Mon Oct 23 17:35:03 EAT 2017, lastUpdated=Mon Oct 23 17:35:03 EAT 2017, status=COMPLETED, exitStatus=exitCode=COMPLETED;exitDescription=, job=[JobInstance: id=370, version=0, Job=[fileExportJob]], jobParameters=[{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}], headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=ebbc1358-f43f-329d-da30-14618eb47552, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303367}] 
2017-10-23 17:35:03.368 DEBUG 14984 --- [sIn.container-1] .s.i.w.o.WebSocketOutboundMessageHandler : org.springframework.integration.handler.MessageHandlerChain#1$child.outboundWeSocketAdapter.handler received message: GenericMessage [payload=JobExecution: id=393, version=2, startTime=Mon Oct 23 17:35:03 EAT 2017, endTime=Mon Oct 23 17:35:03 EAT 2017, lastUpdated=Mon Oct 23 17:35:03 EAT 2017, status=COMPLETED, exitStatus=exitCode=COMPLETED;exitDescription=, job=[JobInstance: id=370, version=0, Job=[fileExportJob]], jobParameters=[{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}], headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=c54b632b-a412-fb05-293a-5509811817ba, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, simpDestination=/topic/export-status, timestamp=1508769303368}] 
2017-10-23 17:35:03.369 WARN 14984 --- [sIn.container-1] o.s.w.s.m.StompSubProtocolHandler  : No STOMP "subscription" header in GenericMessage [payload=byte[410], headers={replyChannel=nullChannel, simpMessageType=MESSAGE, jms_redelivered=false, jms_destination=queue://inQueue, priority=4, jms_timestamp=1508769303167, contentType=text/plain;charset=UTF-8, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, simpDestination=/topic/export-status}] 
2017-10-23 17:35:03.369 TRACE 14984 --- [sIn.container-1] o.s.w.s.s.c.WebSocketClientSockJsSession : Sending message TextMessage payload=[["MESSAGE\..], byteCount=543, last=true] in WebSocketClientSockJsSession[id='59aa39c1ac8340abbf0e1289f9ec2919, url=http://localhost:8080/websocket] 
2017-10-23 17:35:03.369 TRACE 14984 --- [sIn.container-1] o.s.w.s.adapter.NativeWebSocketSession : Sending TextMessage payload=[["MESSAGE\..], byteCount=543, last=true], JettyWebSocketSession[id=a3fcd9f, uri=ws://localhost:8080/websocket/107/59aa39c1ac8340abbf0e1289f9ec2919/websocket] 
2017-10-23 17:35:03.370 DEBUG 14984 --- [sIn.container-1] o.s.integration.handler.LoggingHandler : org.springframework.integration.handler.LoggingHandler#0 received message: GenericMessage [payload=JobExecution: id=393, version=2, startTime=Mon Oct 23 17:35:03 EAT 2017, endTime=Mon Oct 23 17:35:03 EAT 2017, lastUpdated=Mon Oct 23 17:35:03 EAT 2017, status=COMPLETED, exitStatus=exitCode=COMPLETED;exitDescription=, job=[JobInstance: id=370, version=0, Job=[fileExportJob]], jobParameters=[{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}], headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=ebbc1358-f43f-329d-da30-14618eb47552, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303367}] 
2017-10-23 17:35:03.371 INFO 14984 --- [sIn.container-1] o.s.integration.handler.LoggingHandler : GenericMessage [payload=JobExecution: id=393, version=2, startTime=Mon Oct 23 17:35:03 EAT 2017, endTime=Mon Oct 23 17:35:03 EAT 2017, lastUpdated=Mon Oct 23 17:35:03 EAT 2017, status=COMPLETED, exitStatus=exitCode=COMPLETED;exitDescription=, job=[JobInstance: id=370, version=0, Job=[fileExportJob]], jobParameters=[{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}], headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=ebbc1358-f43f-329d-da30-14618eb47552, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303367}] 
2017-10-23 17:35:03.371 DEBUG 14984 --- [sIn.container-1] o.s.i.channel.PublishSubscribeChannel : postSend (sent=true) on channel 'wsStatusChannel', message: GenericMessage [payload=JobExecution: id=393, version=2, startTime=Mon Oct 23 17:35:03 EAT 2017, endTime=Mon Oct 23 17:35:03 EAT 2017, lastUpdated=Mon Oct 23 17:35:03 EAT 2017, status=COMPLETED, exitStatus=exitCode=COMPLETED;exitDescription=, job=[JobInstance: id=370, version=0, Job=[fileExportJob]], jobParameters=[{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}], headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=ebbc1358-f43f-329d-da30-14618eb47552, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303367}] 
2017-10-23 17:35:03.371 DEBUG 14984 --- [sIn.container-1] o.s.integration.channel.DirectChannel : postSend (sent=true) on channel 'jmsOutChannel', message: GenericMessage [payload=JobExecution: id=393, version=2, startTime=Mon Oct 23 17:35:03 EAT 2017, endTime=Mon Oct 23 17:35:03 EAT 2017, lastUpdated=Mon Oct 23 17:35:03 EAT 2017, status=COMPLETED, exitStatus=exitCode=COMPLETED;exitDescription=, job=[JobInstance: id=370, version=0, Job=[fileExportJob]], jobParameters=[{query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}], headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=d60873a9-ca67-a0c9-4b72-0296c538a5f8, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303366}] 
2017-10-23 17:35:03.372 DEBUG 14984 --- [sIn.container-1] o.s.integration.channel.DirectChannel : postSend (sent=true) on channel 'fileExportJobRequests', message: GenericMessage [payload=JobLaunchRequest: fileExportJob, parameters={query=SELECT * FROM networkaudit.rule_missing_externals, format=csv, fileName=missing_externals_20171023053503.csv}, headers={replyChannel=nullChannel, jms_redelivered=false, jms_destination=queue://inQueue, id=4f07fb9a-ae56-942f-d9c8-f9a68a6fb57f, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303184}] 
2017-10-23 17:35:03.372 DEBUG 14984 --- [sIn.container-1] o.s.integration.channel.DirectChannel : postSend (sent=true) on channel 'fileExportJobChannel', message: GenericMessage [payload={file_name=missing_externals_20171023053503.csv, query=SELECT * FROM networkaudit.rule_missing_externals, name=Missing externals, format=csv, pk=1, job=export}, headers={jms_redelivered=false, jms_destination=queue://inQueue, id=eb77658f-c22d-335f-14a2-23facb7aab13, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303177}] 
2017-10-23 17:35:03.372 DEBUG 14984 --- [sIn.container-1] o.s.integration.channel.DirectChannel : postSend (sent=true) on channel 'jmsInChannel', message: GenericMessage [payload={file_name=missing_externals_20171023053503.csv, query=SELECT * FROM networkaudit.rule_missing_externals, name=Missing externals, format=csv, pk=1, job=export}, headers={jms_redelivered=false, jms_destination=queue://inQueue, id=eb77658f-c22d-335f-14a2-23facb7aab13, priority=4, jms_timestamp=1508769303167, jms_messageId=ID:LAPTOP-I5BST4S0-61078-1508580196140-1:55:1:1:1, timestamp=1508769303177}] 
2017-10-23 17:35:04.379 TRACE 14984 --- [sIn.container-1] o.s.j.l.DefaultMessageListenerContainer : Consumer [ActiveMQMessageConsumer { value=ID:LAPTOP-I5BST4S0-52358-1508768644545-1:1:1:1, started=true }] of session [ActiveMQSession {id=ID:LAPTOP-I5BST4S0-52358-1508768644545-1:1:1,started=true} [email protected]] did not receive a message 
2017-10-23 17:35:05.379 TRACE 14984 --- [sIn.container-1] o.s.j.l.DefaultMessageListenerContainer : Consumer [ActiveMQMessageConsumer { value=ID:LAPTOP-I5BST4S0-52358-1508768644545-1:1:1:1, started=true }] of session [ActiveMQSession {id=ID:LAPTOP-I5BST4S0-52358-1508768644545-1:1:1,started=true} [email protected]] did not receive a message 
2017-10-23 17:35:06.380 TRACE 14984 --- [sIn.container-1] 
o.s.j.l.DefaultMessageListenerContainer : Consumer [ActiveMQMessageConsumer 

Serverログ:

2017-10-24 15:36:33.380 TRACE 22164 --- [nio-8080-exec-7] s.w.s.h.LoggingWebSocketHandlerDecorator : Handling TextMessage payload=[MESSAGE 
de..], byteCount=528, last=true] in WebSocketServerSockJsSession[id=9468834bc830423ba2fe048b041e3186] 
2017-10-24 15:36:33.381 TRACE 22164 --- [nio-8080-exec-7] o.s.w.s.m.StompSubProtocolHandler  : From client: MESSAGE {destination=[/topic/export-status], content-type=[text/plain;charset=UTF-8], message-id=[null-3], content-length=[410]} session=9468834bc830423ba2fe048b041e3186 text/plain;charset=UTF-8 payload=JobExecution: id=397, version=2, startTime=Tue Oct 24 15:36:33 EAT 2017, endTime...(truncated) 
2017-10-24 15:36:37.177 DEBUG 22164 --- [nio-8080-exec-8] o.s.b.w.f.OrderedRequestContextFilter : Cleared thread-bound request context: [email protected] 
2017-10-24 15:36:46.755 TRACE 22164 --- [MessageBroker-7] s.w.s.s.t.s.WebSocketServerSockJsSession : Preparing to write SockJsFrame content='h' 
2017-10-24 15:36:46.755 TRACE 22164 --- [MessageBroker-7] s.w.s.s.t.s.WebSocketServerSockJsSession : Writing SockJsFrame content='h' 
2017-10-24 15:36:46.755 TRACE 22164 --- [MessageBroker-7] o.s.w.s.adapter.NativeWebSocketSession : Sending TextMessage payload=[h], byteCount=1, last=true], StandardWebSocketSession[id=0, uri=/websocket/125/9468834bc830423ba2fe048b041e3186/websocket] 
2017-10-24 15:36:46.755 TRACE 22164 --- [MessageBroker-7] s.w.s.s.t.s.WebSocketServerSockJsSession : Cancelling heartbeat in session 9468834bc830423ba2fe048b041e3186 
2017-10-24 15:36:46.755 TRACE 22164 --- [MessageBroker-7] s.w.s.s.t.s.WebSocketServerSockJsSession : Scheduled heartbeat in session 9468834bc830423ba2fe048b041e3186 

UPDATE:チャネルインターセプター追加した後

public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer 
... 
    @Override 
    public void configureClientInboundChannel(ChannelRegistration registration) { 
     registration.taskExecutor().corePoolSize(Runtime.getRuntime().availableProcessors()*4); 

     registration.setInterceptors(new ChannelInterceptorAdapter() { 
      @Override 
      public Message<?> preSend(Message<?> message, MessageChannel channel) { 
       if (StompCommand.MESSAGE.equals(message.getHeaders().get("stompCommand"))) { 
        return MessageBuilder.fromMessage(message) 
          .setHeader("stompCommand", StompCommand.SEND) 
          .build(); 
       } 
       else { 
        return message; 
       } 
      } 
     }); 

    } 
... 

Serverログ: インターセプターを追加

org.springframework.messaging.MessageDeliveryException: Failed to handle GenericMessage [payload=byte[410], headers={simpMessageType=MESSAGE, stompCommand=SEND, id=a9089aac-6c81-1672-cb84-b9a37fdafae9, timestamp=1509003161562}] to org.springf[email protected]702abfd5 in StompBrokerRelay[0.0.0.0:61613]; nested exception is java.lang.IllegalStateException: No header accessor (not using the SimpMessagingTemplate?): GenericMessage [payload=byte[410], headers={simpMessageType=MESSAGE, stompCommand=SEND, id=a9089aac-6c81-1672-cb84-b9a37fdafae9, timestamp=1509003161562}], failedMessage=GenericMessage [payload=byte[410], headers={simpMessageType=MESSAGE, stompCommand=SEND, id=a9089aac-6c81-1672-cb84-b9a37fdafae9, timestamp=1509003161562}] 
    at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:144) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.IllegalStateException: No header accessor (not using the SimpMessagingTemplate?): GenericMessage [payload=byte[410], headers={simpMessageType=MESSAGE, stompCommand=SEND, id=a9089aac-6c81-1672-cb84-b9a37fdafae9, timestamp=1509003161562}] 
    at org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler.handleMessageInternal(StompBrokerRelayMessageHandler.java:458) 
    at org.springframework.messaging.simp.broker.AbstractBrokerMessageHandler.handleMessage(AbstractBrokerMessageHandler.java:238) 
    at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:135) 
... 3 more 
2017-10-26 10:32:41.654 DEBUG 27356 --- [io-8080-exec-10] s.w.s.h.LoggingWebSocketHandlerDecorator : WebSocketServerSockJsSession[id=e12efba449c2414eba4c3396888d163a] closed with CloseStatus[code=4500, reason=null] 

答えて

0

を私は、サーバー側でStompBrokerRelayMessageHandlerを使用すると仮定し、それを送信するためにSTOMPプロトコルの一部であります正確にSENDフレームからクライアントから正しくリレーする。

残念ながらStompSubProtocolHandlerは、サーバー側のみのために設計されており、それがこのロジックを持っている:

else if (stompAccessor.getCommand() == null || StompCommand.SEND.equals(stompAccessor.getCommand())) { 
    stompAccessor.updateStompCommandAsServerMessage(); 
} 

私たちはボックスソリューションoutofとして何ができるか、今考えているが、その間、私はあなたをお勧めしたいです以下のためのChannelInterceptor

@Override 
public void configureClientInboundChannel(ChannelRegistration registration) { 
     registration.interceptors(new ChannelInterceptorAdapter() { 

      @Override 
      public Message<?> preSend(Message<?> message, MessageChannel channel) { 
       if (StompCommand.MESSAGE.equals(message.getHeaders().get("stompCommand"))) { 
        StompHeaderAccessor headers = StompHeaderAccessor.wrap(message); 
        headers.setLeaveMutable(true); 
        headers.removeHeader("stompCommand"); 
        headers.updateStompCommandAsClientMessage(); 
        return MessageBuilder.createMessage(message.getPayload(), headers.getMessageHeaders()); 
       } 
       else { 
        return message; 
       } 
      } 

     }); 
    } 

これはAbstractWebSocketMessageBrokerConfigurerメソッドのオーバーライドです。

+0

あなたは正しいです。私はサーバー側でStompBrokerRelayMessageHandlerを使用しています。私は先に進んで、アドバイスされたように傍受者を追加しましたが、これは別のエラーをもたらします。最初の投稿にログを追加しました。 –

+0

ああ!ごめんなさい。私は今デバッグ後に問題を見る。私の答えで、インターセプターの編集版を見つけてください。私は 'StompHeaderAccessor'機能を意味します。 –

+0

https://jira.spring.io/browse/INT-4360 –

関連する問題