從Spring 2.5,Flex 3.5,BlazeDS 3和Java 6遷移到Spring 3.1,Flex 4.5,BlazeDS 4和Java 7後,我遇到了一個問題。我已經聲明一個ClientFeed以發送向Flex客戶端發送一種「警報」消息。這些警報發送有三種方法。第一個是通過snmp陷阱,一個線程啓動並等待任何陷阱,因爲收到一個警報將被髮送。第二種方法是通過輪詢機制,在web應用程序的開始,一個線程被啓動,並在一段時間後輪詢警報併發送給客戶端。第三種方法是來自用戶的顯式輪詢命令,這將調用專用服務上的特定功能。然後該函數使用第二種方法中使用的相同算法來執行輪詢,並將這些警報發送給客戶端。Spring MessageTemplate問題
問題是遷移後的前兩種方法沒有問題,但第三種方法沒有問題。我懷疑與線程有關係。 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;
}
});
}
}
}
通過三種方法我達到這個一段代碼和所顯示的線程名稱分別是:「線程14」, 「Thread-24」和「http-bio-80-exec-10」。
您不應該將您的標題問題標記爲*已解決*。發表一個答案(就像你做的)並接受它。 – j0k 2012-08-07 13:01:49