I found a UDP listener and sender example. It has some specific ATNA Logging details, which would need to be modified for your purposes. In a source node, use a Script, and set the Custom Script:
var socket;
try {
// create UDP Listener
socket = new java.net.DatagramSocket(6701);
qie.info('socket opened: 6701');
// start reciever thread
var receiverThread = new java.lang.Thread(new java.lang.Runnable() {
run: function() {
com.qvera.qie.persistence.ThreadContext.setUser('sys');
qie.info('receiver thread started');
try {
while (qie.isChannelRunning()) {
// create 4K buffer
var buf = new Packages.java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 4096);
// create receive packet
var packet = new java.net.DatagramPacket(buf, buf.length);
// receive the data
socket.receive(packet);
// extract the data
var data = new java.lang.String(packet.getData(), 0, packet.getLength(), "UTF-8");
qie.info('data received: ' + data);
// add to inbound queue
var auditMessage = data.substring(data.indexOf('<AuditMessage'));
qie.addInboundMessage(auditMessage, null);
}
} catch (err) {
qie.info('receiver thread error: ' + err);
}
qie.info('receiver thread stopped');
}
});
receiverThread.setDaemon(true);
receiverThread.start();
// loop until channel is stopped
while (qie.isChannelRunning()) {
try {
java.lang.Thread.sleep(500);
} catch (err) {
qie.debug("Early wake-up call received.");
}
}
} finally {
socket.close();
qie.info('socket closed: 6701');
}
In order to send to UDP message, you can use the following script:
var clientSocket = new java.net.DatagramSocket();
var IPAddress = java.net.InetAddress.getByName("destinationHost");
var sendPacket = new java.net.DatagramPacket(message.getBytes(), message.getBytes().length, IPAddress, 6701);
clientSocket.send(sendPacket);
clientSocket.close();
It should be noted that UDP does not provide delivery confirmation, and therefore will likely drop packets and neither system will know about it. UDP should not be used with critical data.