Skip to content

Commit eb52263

Browse files
committed
Implement --conn-anonymous-producer option
1 parent 0759a02 commit eb52263

File tree

7 files changed

+25
-4
lines changed

7 files changed

+25
-4
lines changed

jakartalib/src/main/java/com/redhat/mqe/lib/ClientOptions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ void setOptions(ClientOptionManager clientOptionManager, @Args String[] args) {
145145
public static final String CONN_TCP_NO_DELAY = "conn-tcp-no-delay"; // wireFormat.tcpNoDelayEnabled
146146
public static final String CONN_TIGHT_ENCODING_ENA = "conn-tight-encoding-ena"; // wireFormat.tightEncodingEnabled
147147
public static final String CONN_WATCH_TOPIC_ADVISORIES = "conn-watch-topic-advisories";
148+
public static final String CONN_ANONYMOUS_PRODUCER = "conn-anonymous-producer";
148149

149150
// TODO Not implemented by client libraries
150151
// static final String CON_SSL_PROTOCOL = "conn-ssl-protocol";

jakartalib/src/main/java/com/redhat/mqe/lib/SenderClient.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ public void startClient() {
7979
Session session = (transaction == null || transaction.equals("none")) ?
8080
this.createSession(senderOptions, connection, false) : this.createSession(senderOptions, connection, true);
8181
connection.start();
82-
MessageProducer msgProducer = session.createProducer(this.getDestination());
82+
83+
boolean anonymousProducer = Utils.convertOptionToBoolean(senderOptions.getOption(ClientOptions.CONN_ANONYMOUS_PRODUCER).getValue());
84+
MessageProducer msgProducer = anonymousProducer ? session.createProducer(null) : session.createProducer(this.getDestination());
8385
setMessageProducer(senderOptions, msgProducer);
8486

8587
// Calculate msg-rate from COUNT & DURATION
@@ -104,7 +106,11 @@ public void startClient() {
104106

105107
// Send messages
106108
try {
107-
msgProducer.send(message);
109+
if (anonymousProducer) {
110+
msgProducer.send(getDestination(), message);
111+
} else {
112+
msgProducer.send(message);
113+
}
108114
} catch (Exception e) {
109115
switch (e.getCause().getClass().getName()) {
110116
case "org.apache.qpid.jms.provider.exceptions.ProviderDeliveryReleasedException":

jakartalib/src/main/java/com/redhat/mqe/lib/SenderOptions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public class SenderOptions extends ClientOptions {
4747
new Option(PROPERTY_TYPE, "", "PTYPE", "String", "specify the type of message property"),
4848
new Option(MSG_PROPERTY, "", "KEY=PVALUE", "", "specify message property as KEY=VALUE (use '~' instead of '=' for auto-casting)"),
4949
new Option(CONTENT_TYPE, "", "CTYPE", "String", "specify type of the actual content type"),
50+
new Option(CONN_ANONYMOUS_PRODUCER, "", "ANONYMOUS", "no", "create anonymous (no queue specified) producer"),
5051
new Option(MSG_CONTENT_TYPE, "", "MSGTYPE", "", "type of JMSMessageBody to use in header"),
5152
new Option(MSG_CONTENT_FROM_FILE, "", "PATH", "", "specify filename to load content from"),
5253
new Option(MSG_CONTENT, "", "CONTENT", "", "actual content fed to message body"),

jmslib/src/main/java/com/redhat/mqe/lib/ClientOptions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ void setOptions(ClientOptionManager clientOptionManager, @Args String[] args) {
145145
public static final String CONN_TCP_NO_DELAY = "conn-tcp-no-delay"; // wireFormat.tcpNoDelayEnabled
146146
public static final String CONN_TIGHT_ENCODING_ENA = "conn-tight-encoding-ena"; // wireFormat.tightEncodingEnabled
147147
public static final String CONN_WATCH_TOPIC_ADVISORIES = "conn-watch-topic-advisories";
148+
public static final String CONN_ANONYMOUS_PRODUCER = "conn-anonymous-producer";
148149

149150
// TODO Not implemented by client libraries
150151
// static final String CON_SSL_PROTOCOL = "conn-ssl-protocol";

jmslib/src/main/java/com/redhat/mqe/lib/SenderClient.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ public void startClient() {
7979
Session session = (transaction == null || transaction.equals("none")) ?
8080
this.createSession(senderOptions, connection, false) : this.createSession(senderOptions, connection, true);
8181
connection.start();
82-
MessageProducer msgProducer = session.createProducer(this.getDestination());
82+
83+
boolean anonymousProducer = Utils.convertOptionToBoolean(senderOptions.getOption(ClientOptions.CONN_ANONYMOUS_PRODUCER).getValue());
84+
MessageProducer msgProducer = anonymousProducer ? session.createProducer(null) : session.createProducer(this.getDestination());
8385
setMessageProducer(senderOptions, msgProducer);
8486

8587
// Calculate msg-rate from COUNT & DURATION
@@ -104,7 +106,11 @@ public void startClient() {
104106

105107
// Send messages
106108
try {
107-
msgProducer.send(message);
109+
if (anonymousProducer) {
110+
msgProducer.send(getDestination(), message);
111+
} else {
112+
msgProducer.send(message);
113+
}
108114
} catch (Exception e) {
109115
switch (e.getCause().getClass().getName()) {
110116
case "org.apache.qpid.jms.provider.exceptions.ProviderDeliveryReleasedException":

jmslib/src/main/java/com/redhat/mqe/lib/SenderOptions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public class SenderOptions extends ClientOptions {
4747
new Option(PROPERTY_TYPE, "", "PTYPE", "String", "specify the type of message property"),
4848
new Option(MSG_PROPERTY, "", "KEY=PVALUE", "", "specify message property as KEY=VALUE (use '~' instead of '=' for auto-casting)"),
4949
new Option(CONTENT_TYPE, "", "CTYPE", "String", "specify type of the actual content type"),
50+
new Option(CONN_ANONYMOUS_PRODUCER, "", "ANONYMOUS", "no", "create anonymous (no queue specified) producer"),
5051
new Option(MSG_CONTENT_TYPE, "", "MSGTYPE", "", "type of JMSMessageBody to use in header"),
5152
new Option(MSG_CONTENT_FROM_FILE, "", "PATH", "", "specify filename to load content from"),
5253
new Option(MSG_CONTENT, "", "CONTENT", "", "actual content fed to message body"),

lib/src/main/java/com/redhat/mqe/lib/Utils.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,4 +294,9 @@ public static Object getObjectValue(Class<?> clazz, String object, boolean allow
294294
return myObj;
295295
}
296296

297+
298+
public static boolean convertOptionToBoolean(String optionStringValue) {
299+
String optionValue = optionStringValue.toLowerCase();
300+
return (optionValue.equals("true") || optionValue.equals("yes"));
301+
}
297302
}

0 commit comments

Comments
 (0)