
It is true that the EmitLogDirect.getMessage() method only calls the EmitLogDirect.joinStrings() method when the length of the strings array argument is at least 2. However, it is safe make our method more robust by avoiding the ArrayIndexOutOfBoundsException exception as much as we can. Who knows? Maybe the EmitLogDirect.joinStrings() method could be extracted in a utility class and used in cases where the startIndex could potentially be equal to the length of the passed array.
49 lines
1.6 KiB
Java
49 lines
1.6 KiB
Java
import com.rabbitmq.client.BuiltinExchangeType;
|
|
import com.rabbitmq.client.Channel;
|
|
import com.rabbitmq.client.Connection;
|
|
import com.rabbitmq.client.ConnectionFactory;
|
|
|
|
public class EmitLogDirect {
|
|
|
|
private static final String EXCHANGE_NAME = "direct_logs";
|
|
|
|
public static void main(String[] argv) throws Exception {
|
|
ConnectionFactory factory = new ConnectionFactory();
|
|
factory.setHost("localhost");
|
|
try (Connection connection = factory.newConnection();
|
|
Channel channel = connection.createChannel()) {
|
|
channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.DIRECT);
|
|
|
|
String severity = getSeverity(argv);
|
|
String message = getMessage(argv);
|
|
|
|
channel.basicPublish(EXCHANGE_NAME, severity, null, message.getBytes("UTF-8"));
|
|
System.out.println(" [x] Sent '" + severity + "':'" + message + "'");
|
|
}
|
|
}
|
|
|
|
private static String getSeverity(String[] strings) {
|
|
if (strings.length < 1)
|
|
return "info";
|
|
return strings[0];
|
|
}
|
|
|
|
private static String getMessage(String[] strings) {
|
|
if (strings.length < 2)
|
|
return "Hello World!";
|
|
return joinStrings(strings, " ", 1);
|
|
}
|
|
|
|
private static String joinStrings(String[] strings, String delimiter, int startIndex) {
|
|
int length = strings.length;
|
|
if (length == 0) return "";
|
|
if (length <= startIndex) return "";
|
|
StringBuilder words = new StringBuilder(strings[startIndex]);
|
|
for (int i = startIndex + 1; i < length; i++) {
|
|
words.append(delimiter).append(strings[i]);
|
|
}
|
|
return words.toString();
|
|
}
|
|
}
|
|
|