Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.Chapter 21. DataSet
DataSet Component Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
The DataSet component (available since 1.3.0) provides a mechanism to easily perform load & soak testing of your system. It works by allowing you to create DataSet instances both as a source of messages and as a way to assert that the data set is received.
Apache Camel will use the throughput logger when sending dataset's.
URI format Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
dataset:name[?options]
dataset:name[?options]
Apache Camel ships with a support implementation of
org.apache.camel.component.dataset.DataSet
, the org.apache.camel.component.dataset.DataSetSupport
class, that can be used as a base for implementing your own DataSet. Apache Camel also ships with a default implementation, the org.apache.camel.component.dataset.SimpleDataSet
that can be used for testing.
Options Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
Option | Default | Description |
---|---|---|
produceDelay
|
3 | Allows a delay in ms to be specified, which causes producers to pause in order to simulate slow producers. Uses a minimum of 3 ms delay unless you set this option to -1 to force no delay at all. |
consumeDelay
|
0 | Allows a delay in ms to be specified, which causes consumers to pause in order to simulate slow consumers. |
preloadSize
|
0 | Sets how many messages should be preloaded (sent) before the route completes its initialization. |
initialDelay
|
1000 | Camel 2.1: Time period in millis to wait before starting sending messages. |
minRate
|
0 | Wait until the DataSet contains at least this number of messages |
You can append query options to the URI in the following format,
?option=value&option=value&...
Configuring DataSet Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
Apache Camel will lookup in the Registry for a bean implementing the DataSet interface. So you can register your own DataSet as:
<bean id="myDataSet" class="com.mycompany.MyDataSet"> <property name="size" value="100"/> </bean>
<bean id="myDataSet" class="com.mycompany.MyDataSet">
<property name="size" value="100"/>
</bean>
Example Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
For example, to test that a set of messages are sent to a queue and then consumed from the queue without losing any messages:
// send the dataset to a queue from("dataset:foo").to("activemq:SomeQueue"); // now lets test that the messages are consumed correctly from("activemq:SomeQueue").to("dataset:foo");
// send the dataset to a queue
from("dataset:foo").to("activemq:SomeQueue");
// now lets test that the messages are consumed correctly
from("activemq:SomeQueue").to("dataset:foo");
The above would look in the Registry to find the foo DataSet instance which is used to create the messages.
Then you create a DataSet implementation, such as using the
SimpleDataSet
as described below, configuring things like how big the data set is and what the messages look like etc.
Properties on SimpleDataSet Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
Property | Type | Description |
---|---|---|
defaultBody
|
Object
|
Specifies the default message body. For SimpleDataSet it is a constant payload; though if you want to create custom payloads per message, create your own derivation of DataSetSupport .
|
reportGroup
|
long
|
Specifies the number of messages to be received before reporting progress. Useful for showing progress of a large load test. |
size
|
long
|
Specifies how many messages to send/consume. |