Info
Morphium Messaging JMS Implementation
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!