For Wildfly, copy aws-sqs-rar-[VERSION HERE].rar to your application server deployment folder. In standalone it should be:
$WILDFLY_HOME/standalone/deployments
Either reference the resource adapter on your MDB using:
@ResourceAdapter("aws-sqs-rar-[VERSION HERE].rar")
Or by setting as the default adapter on standalone-full.xml:
<subsystem xmlns="urn:jboss:domain:ejb3:6.0">
...
<mdb>
<resource-adapter-ref resource-adapter-name="${ejb.resource-adapter-name:activemq-ra.rar}"/>
...
</mdb>
...
</subsystem>
Then create a queue:
<subsystem xmlns="urn:jboss:domain:resource-adapters:5.0">
<resource-adapters>
<resource-adapter id="aws-sqs-rar-[VERSION HERE].rar">
<archive>
aws-sqs-rar-${project.version}.rar
</archive>
<transaction-support>NoTransaction</transaction-support>
<admin-objects>
<admin-object class-name="io.bpic.aws.sqs.ra.SQSJMSQueue" jndi-name="java:jboss/sqs/queue/QueueName" pool-name="QueuePool">
<config-property name="queueName">[QUEUE NAME]</config-property>
</admin-object>
</admin-objects>
</resource-adapter>
</resource-adapters>
</subsystem>
To receive messages you must implement the MessageListener interface.
public class ReceiveSQSMDB implements MessageListener {
}
Also you must set the ActivationConfigProperty values suitable for your MDB.
Valid properties are below.
Config Property Name | Type | Default | Notes |
---|---|---|---|
awsAccessKeyId | String | None | Must be set to the access key of your AWS account (Optional) |
awsSecretKey | String | None | Must be set to the secret key of your AWS account (Optional) |
destination | String | None | JNDI queue name |
region | String | None | Must be set to the AWS region name of your queue. (Optional) |
Your MDB should contain one method annotated with @OnMessage
A full skeleton MDB is shown below
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "awsAccessKeyId", propertyValue = "${ENV=accessKey}"),
@ActivationConfigProperty(propertyName = "awsSecretKey", propertyValue = "${ENV=secretKey}"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "${ENV=destination}"),
@ActivationConfigProperty(propertyName = "region", propertyValue = "eu-west-2")
})
@ResourceAdapter("aws-sqs-rar-[VERSION HERE].rar")
public class ReceiveSQSMDB implements MessageListener {
@OnMessage
public void receiveMessage(Message message) {
System.out.println("Got message " + message.getBody());
}
}
This project is licensed under the GNU AGPLv3 License - see the LICENSE.md file for details