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]
あなたは正しいです。私はサーバー側でStompBrokerRelayMessageHandlerを使用しています。私は先に進んで、アドバイスされたように傍受者を追加しましたが、これは別のエラーをもたらします。最初の投稿にログを追加しました。 –
ああ!ごめんなさい。私は今デバッグ後に問題を見る。私の答えで、インターセプターの編集版を見つけてください。私は 'StompHeaderAccessor'機能を意味します。 –
https://jira.spring.io/browse/INT-4360 –