Morphium 4.0.6.2 ist released und diese Version beinhaltet unter anderem eine Änderung, mit der man Morphium Messaging via JMS ansprechen kann.
Hier ein Auszug aus den Tests:
´´´java
public class BasicJMSTests extends MongoTest {
@Test
public void basicSendReceiveTest() throws Exception {
JMSConnectionFactory factory = new JMSConnectionFactory(morphium);
JMSContext ctx1 = factory.createContext();
JMSContext ctx2 = factory.createContext();
JMSProducer pr1 = ctx1.createProducer();
Topic dest = new JMSTopic("test1");
JMSConsumer con = ctx2.createConsumer(dest);
con.setMessageListener(message -> log.info("Got Message!"));
pr1.send(dest, "A test");
ctx1.close();
ctx2.close();
}
@Test
public void synchronousSendRecieveTest() throws Exception {
JMSConnectionFactory factory = new JMSConnectionFactory(morphium);
JMSContext ctx1 = factory.createContext();
JMSContext ctx2 = factory.createContext();
JMSProducer pr1 = ctx1.createProducer();
Topic dest = new JMSTopic("test1");
JMSConsumer con = ctx2.createConsumer(dest);
final Map<String, Object> exchange = new ConcurrentHashMap<>();
Thread senderThread = new Thread(() -> {
JMSTextMessage message = new JMSTextMessage();
try {
message.setText("Test");
} catch (JMSException e) {
e.printStackTrace();
}
pr1.send(dest, message);
log.info("Sent out message");
exchange.put("sent", true);
});
Thread receiverThread = new Thread(() -> {
log.info("Receiving...");
Message msg = con.receive();
log.info("Got incoming message");
exchange.put("received", true);
});
receiverThread.start();
senderThread.start();
Thread.sleep(5000);
assert (exchange.get("sent") != null);
assert (exchange.get("received") != null);
}
} ´´´
Das nur so als Teaser - und das ganze sollte man auch noch als Beta-Stadium betrachten. Außerdem werden einige Features von Morphium Messaging auf diese Art und weise verloren gehen:
- via JMS wird man voraussichtlich keine direkte Nachricht an einen Knoten senden können
- der Zugriff via JMS erlaubt einige dinge nicht, wie z.B. custom message Klassen.
- überhaupt ist
Morphium Messagingum einiges flexibler in den Anwendungsbeispielen, als JMS. Da man detaillierter festlegen kann, welche Message wo hin gesendet wird.
Wie gesagt, ist noch im BETA-Stadium, aber definitiv spannend!