Apache的駱駝看起來非常有前途的,但與我怎麼了我的春天啓動的應用程序設置以及齧合。我最終使用了IBM的MQ庫。
我基本上使用這些選項設置隊列後
putMsgOpts = new MQPutMessageOptions();
getFirstMsgOpts = new MQGetMessageOptions();
getFirstMsgOpts.options = MQConstants.MQGMO_BROWSE_FIRST;
getNextMsgOpts = new MQGetMessageOptions();
getNextMsgOpts.options = MQConstants.MQGMO_BROWSE_NEXT;
然後用我的方法,它調用
public void transferQueue(MQPropsManager q1) {
String message = "";
message = readFromQueue1(q1, getFirstMsgOpts);
message = verifyMessage(message); // just a check for empty or null
writeToQueue2(message);
q1.decrementMessagesLeftToProcess(); // decrement initial queue depth
while (q1.getMessagesLeftToProcess() > 0) {
message = readFromQueue1(q1, getNextMsgOpts);
message = verifyMessage(message);
writeToQueue2(message);
q1.decrementMessagesLeftToProcess();
}
closeQueue(q1);
}
那麼這兩個方法:
public String readFromQueue1(MQPropsManager q1,
MQGetMessageOptions getMsgOpts) {
MQMessage msg = new MQMessage();
String message = "";
try {
q1.getQueue().get(msg, getMsgOpts);
message = msg.readStringOfCharLength(msg.getMessageLength());
} catch (IOException ioe) {
// Failed to read string retreived from queue: q1.getQueueName()
} catch (MQException mqe) {
// Failed to retreive message from queue: q1.getQueueName()
}
return message;
}
public void writeToQueue2(String message) {
MQMessage mqMessage = new MQMessage();
mqMessage.format = MQConstants.MQFMT_STRING;
mqMessage.messageType = MQConstants.MQMT_DATAGRAM;
try {
mqMessage.writeString(message);
q2.getQueue().put(mqMessage, putMsgOpts);
} catch (IOException ioe) {
// Failed to write message: message
} catch (MQException mqe) {
// Failed to put message: message on to the queue2
}
}
你知道這有直接的實現使用Spring?因爲每個隊列定義不會太冗長? –
你可以使用Apache的駱駝春天。網上有很容易整合的例子。你可以使用我的一個項目作爲起點https://github.com/gmaslowski/dam-camel/tree/master/dam-camel-tw – gmaslowski
非常好,謝謝。我會檢查一下,看看這是否是我想要走向的方向。 –