mirror of https://github.com/apache/activemq.git
- Added a getClientID to retrieve the connectionID of a client
- Added a getSettings to PerfMeasurable client and remove unnecessary getters. - Added a PerfMeasurable parameter to the listeners. git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@411019 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a37fa0d6f3
commit
29eef80774
|
@ -32,6 +32,7 @@ public class JmsConfigurableClientSupport extends JmsBasicClientSupport {
|
|||
|
||||
private String serverType = "";
|
||||
private String factoryClass = "";
|
||||
private String clientID = "";
|
||||
|
||||
private Map factorySettings = new HashMap();
|
||||
private Map connectionSettings = new HashMap();
|
||||
|
@ -154,6 +155,14 @@ public class JmsConfigurableClientSupport extends JmsBasicClientSupport {
|
|||
return jmsMessageConsumer;
|
||||
}
|
||||
|
||||
public String getClientID() {
|
||||
try {
|
||||
return getConnection().getClientID();
|
||||
} catch (Exception e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public TopicSubscriber createDurableSubscriber(Topic dest, String name, String selector, boolean noLocal) throws JMSException {
|
||||
jmsMessageConsumer = getSession().createDurableSubscriber(dest, name, selector, noLocal);
|
||||
configureJmsObject(jmsMessageConsumer, consumerSettings);
|
||||
|
@ -192,14 +201,14 @@ public class JmsConfigurableClientSupport extends JmsBasicClientSupport {
|
|||
|
||||
public void addConfigParam(String key, Object value) {
|
||||
// Simple mapping of JMS Server to connection factory class
|
||||
if (key.equalsIgnoreCase("server")) {
|
||||
if (key.equalsIgnoreCase("client.server")) {
|
||||
serverType = value.toString();
|
||||
if (serverType.equalsIgnoreCase(AMQ_SERVER)) {
|
||||
factoryClass = AMQ_CONNECTION_FACTORY_CLASS;
|
||||
}
|
||||
|
||||
// Manually specify the connection factory class to use
|
||||
} else if (key.equalsIgnoreCase("factoryClass")) {
|
||||
} else if (key.equalsIgnoreCase("client.factoryClass")) {
|
||||
factoryClass = value.toString();
|
||||
|
||||
// Connection factory specific settings
|
||||
|
|
|
@ -16,13 +16,12 @@
|
|||
*/
|
||||
package org.apache.activemq.tool;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class JmsPerfClientSupport extends JmsConfigurableClientSupport implements PerfMeasurable {
|
||||
|
||||
protected long throughput = 0;
|
||||
protected long interval = 1000; // 1 sec
|
||||
protected long duration = 1000 * 60 * 10; // 10 min
|
||||
protected long rampUpTime = 1000 * 60 * 1; // 1 min
|
||||
protected long rampDownTime = 1000 * 60 * 1; // 1 min
|
||||
|
||||
protected PerfEventListener listener = null;
|
||||
|
||||
|
@ -46,38 +45,6 @@ public class JmsPerfClientSupport extends JmsConfigurableClientSupport implement
|
|||
throughput += val;
|
||||
}
|
||||
|
||||
public long getInterval() {
|
||||
return interval;
|
||||
}
|
||||
|
||||
public void setInterval(long val) {
|
||||
this.interval = val;
|
||||
}
|
||||
|
||||
public long getDuration() {
|
||||
return duration;
|
||||
}
|
||||
|
||||
public void setDuration(long val) {
|
||||
this.duration = val;
|
||||
}
|
||||
|
||||
public long getRampUpTime() {
|
||||
return rampUpTime;
|
||||
}
|
||||
|
||||
public void setRampUpTime(long val) {
|
||||
this.rampUpTime = val;
|
||||
}
|
||||
|
||||
public long getRampDownTime() {
|
||||
return rampDownTime;
|
||||
}
|
||||
|
||||
public void setRampDownTime(long val) {
|
||||
this.rampDownTime = val;
|
||||
}
|
||||
|
||||
public void setPerfEventListener(PerfEventListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
@ -85,4 +52,21 @@ public class JmsPerfClientSupport extends JmsConfigurableClientSupport implement
|
|||
public PerfEventListener getPerfEventListener() {
|
||||
return listener;
|
||||
}
|
||||
|
||||
public Map getClientSettings() {
|
||||
Map settings = new HashMap();
|
||||
settings.put("client.server", getServerType());
|
||||
settings.put("client.factoryClass", getFactoryClass());
|
||||
settings.put("client.clientID", getClientID());
|
||||
settings.putAll(getFactorySettings());
|
||||
settings.putAll(getConnectionSettings());
|
||||
settings.putAll(getSessionSettings());
|
||||
settings.putAll(getQueueSettings());
|
||||
settings.putAll(getTopicSettings());
|
||||
settings.putAll(getProducerSettings());
|
||||
settings.putAll(getConsumerSettings());
|
||||
settings.putAll(getMessageSettings());
|
||||
|
||||
return settings;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ public class JmsProducerClient extends JmsPerfClientSupport {
|
|||
|
||||
public void createProducer(int messageSize) throws JMSException {
|
||||
|
||||
listener.onConfigStart();
|
||||
listener.onConfigStart(this);
|
||||
|
||||
// Create connection factory
|
||||
if (factory != null) {
|
||||
|
@ -120,7 +120,7 @@ public class JmsProducerClient extends JmsPerfClientSupport {
|
|||
message = createTextMessage(buff);
|
||||
}
|
||||
|
||||
listener.onConfigEnd();
|
||||
listener.onConfigEnd(this);
|
||||
}
|
||||
|
||||
public void sendCountBasedMessages(long messageCount) throws JMSException {
|
||||
|
@ -132,20 +132,22 @@ public class JmsProducerClient extends JmsPerfClientSupport {
|
|||
if (message != null) {
|
||||
// Send to more than one actual destination
|
||||
if (dest.length > 1) {
|
||||
listener.onPublishStart();
|
||||
listener.onPublishStart(this);
|
||||
for (int i=0; i<messageCount; i++) {
|
||||
for (int j=0; j<dest.length; j++) {
|
||||
getMessageProducer().send(dest[j], message);
|
||||
incThroughput();
|
||||
}
|
||||
}
|
||||
listener.onPublishEnd();
|
||||
listener.onPublishEnd(this);
|
||||
// Send to only one actual destination
|
||||
} else {
|
||||
listener.onPublishStart();
|
||||
listener.onPublishStart(this);
|
||||
for (int i=0; i<messageCount; i++) {
|
||||
getMessageProducer().send(message);
|
||||
incThroughput();
|
||||
}
|
||||
listener.onPublishEnd();
|
||||
listener.onPublishEnd(this);
|
||||
}
|
||||
|
||||
// Send different type of messages using indexing to identify each one.
|
||||
|
@ -154,21 +156,23 @@ public class JmsProducerClient extends JmsPerfClientSupport {
|
|||
} else {
|
||||
// Send to more than one actual destination
|
||||
if (dest.length > 1) {
|
||||
listener.onPublishStart();
|
||||
listener.onPublishStart(this);
|
||||
for (int i=0; i<messageCount; i++) {
|
||||
for (int j=0; j<dest.length; j++) {
|
||||
getMessageProducer().send(dest[j], createTextMessage("Text Message [" + i + "]"));
|
||||
incThroughput();
|
||||
}
|
||||
}
|
||||
listener.onPublishEnd();
|
||||
listener.onPublishEnd(this);
|
||||
|
||||
// Send to only one actual destination
|
||||
} else {
|
||||
listener.onPublishStart();
|
||||
listener.onPublishStart(this);
|
||||
for (int i=0; i<messageCount; i++) {
|
||||
getMessageProducer().send(createTextMessage("Text Message [" + i + "]"));
|
||||
incThroughput();
|
||||
}
|
||||
listener.onPublishEnd();
|
||||
listener.onPublishEnd(this);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
|
@ -188,20 +192,22 @@ public class JmsProducerClient extends JmsPerfClientSupport {
|
|||
if (message != null) {
|
||||
// Send to more than one actual destination
|
||||
if (dest.length > 1) {
|
||||
listener.onPublishStart();
|
||||
listener.onPublishStart(this);
|
||||
while (System.currentTimeMillis() < endTime) {
|
||||
for (int j=0; j<dest.length; j++) {
|
||||
getMessageProducer().send(dest[j], message);
|
||||
incThroughput();
|
||||
}
|
||||
}
|
||||
listener.onPublishEnd();
|
||||
listener.onPublishEnd(this);
|
||||
// Send to only one actual destination
|
||||
} else {
|
||||
listener.onPublishStart();
|
||||
listener.onPublishStart(this);
|
||||
while (System.currentTimeMillis() < endTime) {
|
||||
getMessageProducer().send(message);
|
||||
incThroughput();
|
||||
}
|
||||
listener.onPublishEnd();
|
||||
listener.onPublishEnd(this);
|
||||
}
|
||||
|
||||
// Send different type of messages using indexing to identify each one.
|
||||
|
@ -211,21 +217,23 @@ public class JmsProducerClient extends JmsPerfClientSupport {
|
|||
// Send to more than one actual destination
|
||||
long count = 1;
|
||||
if (dest.length > 1) {
|
||||
listener.onPublishStart();
|
||||
listener.onPublishStart(this);
|
||||
while (System.currentTimeMillis() < endTime) {
|
||||
for (int j=0; j<dest.length; j++) {
|
||||
getMessageProducer().send(dest[j], createTextMessage("Text Message [" + count++ + "]"));
|
||||
incThroughput();
|
||||
}
|
||||
}
|
||||
listener.onPublishEnd();
|
||||
listener.onPublishEnd(this);
|
||||
|
||||
// Send to only one actual destination
|
||||
} else {
|
||||
listener.onPublishStart();
|
||||
listener.onPublishStart(this);
|
||||
while (System.currentTimeMillis() < endTime) {
|
||||
getMessageProducer().send(createTextMessage("Text Message [" + count++ + "]"));
|
||||
incThroughput();
|
||||
}
|
||||
listener.onPublishEnd();
|
||||
listener.onPublishEnd(this);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
|
|
|
@ -19,27 +19,27 @@ package org.apache.activemq.tool;
|
|||
import javax.jms.JMSException;
|
||||
|
||||
public class PerfEventAdapter implements PerfEventListener {
|
||||
public void onConfigStart() {
|
||||
public void onConfigStart(PerfMeasurable client) {
|
||||
}
|
||||
|
||||
public void onConfigEnd() {
|
||||
public void onConfigEnd(PerfMeasurable client) {
|
||||
}
|
||||
|
||||
public void onPublishStart() {
|
||||
public void onPublishStart(PerfMeasurable client) {
|
||||
}
|
||||
|
||||
public void onPublishEnd() {
|
||||
public void onPublishEnd(PerfMeasurable client) {
|
||||
}
|
||||
|
||||
public void onConsumeStart() {
|
||||
public void onConsumeStart(PerfMeasurable client) {
|
||||
}
|
||||
|
||||
public void onConsumeEnd() {
|
||||
public void onConsumeEnd(PerfMeasurable client) {
|
||||
}
|
||||
|
||||
public void onJMSException(JMSException e) {
|
||||
public void onJMSException(PerfMeasurable client, JMSException e) {
|
||||
}
|
||||
|
||||
public void onException(Exception e) {
|
||||
public void onException(PerfMeasurable client, Exception e) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,12 +19,12 @@ package org.apache.activemq.tool;
|
|||
import javax.jms.JMSException;
|
||||
|
||||
public interface PerfEventListener {
|
||||
public void onConfigStart();
|
||||
public void onConfigEnd();
|
||||
public void onPublishStart();
|
||||
public void onPublishEnd();
|
||||
public void onConsumeStart();
|
||||
public void onConsumeEnd();
|
||||
public void onJMSException(JMSException e);
|
||||
public void onException(Exception e);
|
||||
public void onConfigStart(PerfMeasurable client);
|
||||
public void onConfigEnd(PerfMeasurable client);
|
||||
public void onPublishStart(PerfMeasurable client);
|
||||
public void onPublishEnd(PerfMeasurable client);
|
||||
public void onConsumeStart(PerfMeasurable client);
|
||||
public void onConsumeEnd(PerfMeasurable client);
|
||||
public void onJMSException(PerfMeasurable client, JMSException e);
|
||||
public void onException(PerfMeasurable client, Exception e);
|
||||
}
|
||||
|
|
|
@ -16,13 +16,12 @@
|
|||
*/
|
||||
package org.apache.activemq.tool;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface PerfMeasurable {
|
||||
public void reset();
|
||||
public long getThroughput();
|
||||
public long getInterval();
|
||||
public long getDuration();
|
||||
public long getRampUpTime();
|
||||
public long getRampDownTime();
|
||||
public Map getClientSettings();
|
||||
public void setPerfEventListener(PerfEventListener listener);
|
||||
public PerfEventListener getPerfEventListener();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue