...
This component provides access to an SMSC (Short Message Service Center) over the SMPP protocol to send and receive SMS. The JSMPP library is used for the protocol implementation.
The Camel component currently operates as an ESME (External Short Messaging Entity) and not as an SMSC itself.
Starting with Camel 2.9, you are also able to execute ReplaceSm, QuerySm, SubmitMulti, CancelSm and DataSm.
Maven users will need to add the following dependency to their pom.xml
for this component:
Code Block | ||||
---|---|---|---|---|
| ||||
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-smpp</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
|
URI format
Code Block |
---|
smpp://[username@]hostname[:port][?options]
smpps://[username@]hostname[:port][?options]
|
...
You can have as many of these options as you like.
Code Block |
---|
smpp://smppclient@localhost:2775?password=password&enquireLinkTimer=3000&transactionTimer=5000&systemType=consumer
|
...
This component supports the general Camel exception handling capabilities.
Camel 2.8 onwards: When the SMPP consumer receives a DeliverSm
or DataSm
short message and the processing of these messages fails, you can also throw a ProcessRequestException
instead of handle the failure. In this case, this exception is forwarded to the underlying JSMPP library which will return the included error code to the SMSC. This feature is useful to e.g. instruct the SMSC to resend the short message at a later time. This could be done with the following lines of code:
Code Block | ||||
---|---|---|---|---|
| ||||
from("smpp://smppclient@localhost:2775?password=password&enquireLinkTimer=3000&transactionTimer=5000&systemType=consumer")
.doTry()
.to("bean:dao?method=updateSmsState")
.doCatch(Exception.class)
.throwException(new ProcessRequestException("update of sms state failed", 100))
.end();
|
...
A route which sends an SMS using the Java DSL:
Code Block |
---|
from("direct:start")
.to("smpp://smppclient@localhost:2775?
password=password&enquireLinkTimer=3000&transactionTimer=5000&systemType=producer");
|
A route which sends an SMS using the Spring XML DSL:
Code Block | ||||
---|---|---|---|---|
| ||||
<route>
<from uri="direct:start"/>
<to uri="smpp://smppclient@localhost:2775?
password=password&enquireLinkTimer=3000&transactionTimer=5000&systemType=producer"/>
</route>
|
A route which receives an SMS using the Java DSL:
Code Block |
---|
from("smpp://smppclient@localhost:2775?password=password&enquireLinkTimer=3000&transactionTimer=5000&systemType=consumer")
.to("bean:foo");
|
A route which receives an SMS using the Spring XML DSL:
Code Block | ||||
---|---|---|---|---|
| ||||
<route>
<from uri="smpp://smppclient@localhost:2775?
password=password&enquireLinkTimer=3000&transactionTimer=5000&systemType=consumer"/>
<to uri="bean:foo"/>
</route>
|
...
This component has log level DEBUG, which can be helpful in debugging problems. If you use log4j, you can add the following line to your configuration:
Code Block |
---|
log4j.logger.org.apache.camel.component.smpp=DEBUG
|
Include Page | ||||
---|---|---|---|---|
|