스프링 2.5, Flex 3.5, BlazeDS 3 및 Java 6에서 Spring 3.1, Flex 4.5, BlazeDS 4 및 Java 7로 마이그레이션 한 후 문제가 발생합니다. 보내기 위해 ClientFeed를 선언했습니다. 플렉스 클라이언트에 일종의 "알람"메시지. 이러한 경보는 세 가지 방법으로 전송됩니다. 첫 번째 것은 SNMP 트랩을 통해 이루어지며, 스레드가 시작되고 트랩을 기다리는 중 하나가 수신되면 경보가 전송됩니다. 두 번째 방법은 폴링 메커니즘을 사용하여 웹 응용 프로그램의 시작 부분에서 스레드가 시작되고 일정 시간 후 경보를 폴링하여 클라이언트에 보냅니다. 세 번째 방법은 사용자의 명시적인 폴링 명령으로, 전용 서비스에서 특정 기능을 호출합니다. 이 함수는 두 번째 메소드에서 사용 된 동일한 알고리즘을 사용하여 폴링을 수행하고 이러한 알람을 클라이언트에 전송합니다.스프링 메시지 템플릿 문제
문제는 마이그레이션 후 첫 번째 두 가지 방법이 문제없이 작동하지만 세 번째 방법은 문제가되지 않는다는 것입니다. 나는 그 실과의 관계가 의심 스럽다. messagetemplate과 새로운 프레임 워크가있는 스레드 사이에 알려진 문제가 있습니까?
@Component
public class ClientFeed {
private MessageTemplate messageTemplate;
@Autowired
public void setTemplate(MessageTemplate messageTemplate) {
this.messageTemplate = messageTemplate;
}
public void sendAlarmUpdate(final Alarm myAlarm) {
if (messageTemplate != null) {
System.out.println("Debug Thread: " + Thread.currentThread().getName());
messageTemplate.send(new AsyncMessageCreator() {
public AsyncMessage createMessage() {
AsyncMessage msg = messageTemplate.createMessageForDestination("flexClientFeed");
msg.setHeader("DSSubtopic", "Alarm");
msg.setBody(myAlarm);
return msg;
}
});
}
}
} I가 각각있는이 코드 조각 표시된 스레드 이름에 도달 세 가지 방법으로
:
여기에 사용 된 클라이언트 공급의 스냅 샷입니다 "스레드-14", "Thread-24"및 "http-bio-80-exec-10".
제목 질문을 * 해결 된 *으로 표시하면 안됩니다. 대답을 게시하고 (당신처럼) 그것을 받아들입니다. – j0k