Hi Simon,
You set context variable "queue.behaviourOnUnknownDeclareArgument" as
an attribute in your virtual host initial configuration.
You need to set it as an entry in "context" attribute, for example,
{
...
"context": {
"queue.behaviourOnUnknownDeclareArgument": "IGNORE"
}
...
}
Thus, your virtual host initial configuration should be like the one below
{
"type": "Memory",
"nodeAutoCreationPolicies": [
{
"pattern": ".*",
"createdOnPublish": "true",
"createdOnConsume": "true",
"nodeType": "queue",
"attributes": {
"context": {
"queue.behaviourOnUnknownDeclareArgument": "IGNORE"
}
}
}
]
}
or in strigified form
"{\"type\":\"Memory\",\"nodeAutoCreationPolicies\":[{\"pattern\":\".*\",\"createdOnPublish\":\"true\",\"createdOnConsume\":\"true\",\"nodeType\":\"queue\",\"attributes\":
{\"context\": {\"queue.behaviourOnUnknownDeclareArgument\":\"IGNORE\"
}}}]}"
It seems that instructions [1], you followed, are based on Qpid
instructions [2] but I could be wrong.
Kind Regards,
Alex
[1]
https://novotnyr.github.io/scrolls/qpid-as-mocking-amqp-broker-for-integration-tests/
[2] https://cwiki.apache.org/confluence/display/qpid/How+to+embed+Qpid+Broker-J
On Tue, 30 Mar 2021 at 15:27, Simon Baptista <[email protected]> wrote:
>
> Hi,
>
> I'm trying to use QPID in-memory for the purpose of an integration test
> against a RabbitMQ consumer.
>
> My application uses a RabbitMQ specific queue declaration argument
> (x-expires). I've seen through googling that
> "queue.behaviourOnUnknownDeclareArgument: Ignore" Will do what I want to do.
>
> This is what my config looks like at the moment (I'm making guesses about the
> nodeAutoCreationPolicies being the default template for how elements are
> created...):
> =======================
> {
> "name": "Embedded Broker",
> "modelVersion": "7.0",
> "authenticationproviders": [
> {
> "name": "hardcoded",
> "type": "Plain",
> "secureOnlyMechanisms": [],
> "users": [
> {
> "name": "guest",
> "password": "guest",
> "type": "managed"
> }
> ]
> }
> ],
> "ports": [
> {
> "name": "AMQP",
> "port": "${qpid.amqp_port}",
> "bindingAddress": "127.0.0.1",
> "protocols": [
> "AMQP_0_9_1"
> ],
> "authenticationProvider": "hardcoded",
> "virtualhostaliases": [
> {
> "name": "defaultAlias",
> "type": "defaultAlias"
> }
> ]
> }
> ],
> "virtualhostnodes": [
> {
> "name": "default",
> "type": "Memory",
> "defaultVirtualHostNode": "true",
> "virtualHostInitialConfiguration": "{\"type\": \"Memory\",
> \"nodeAutoCreationPolicies\":
> [{\"pattern\":\".*\",\"createdOnPublish\":\"true\",\"createdOnConsume\":\"true\",\"nodeType\":\"queue\",
> \"attributes\": {\"queue.behaviourOnUnknownDeclareArgument\":\"IGNORE\"}}]}"
> }
> ]
> }
> =========================
>
> And it's doesn't appear to be doing anything as my application is throwing:
> ===============
> java.io.IOException: null
> at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:129)
> at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:125)
> at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:147)
> at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:968)
> at
> com.rabbitmq.client.impl.recovery.AutorecoveringChannel.queueDeclare(AutorecoveringChannel.java:342)
> ...
> Caused by: com.rabbitmq.client.ShutdownSignalException: connection error;
> protocol method: #method<connection.close>(reply-code=542, reply-text=Error
> creating queue 'myqueue_dtmanager_task': Unsupported queue declare
> argument(s) : x-expires, class-id=50, method-id=10) at
> com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66)
> ===============
>
>
> This is how I am initialising my broker:
> ===================
>
> public class BrokerManager {
>
> private static final String DEFAULT_INITIAL_CONFIGURATION_LOCATION =
> "qpid-it.json";
>
> private SystemLauncher systemLauncher;
>
> public BrokerManager() {
> this.systemLauncher = new SystemLauncher();
> }
>
> public void start() throws Exception {
> this.systemLauncher.startup(createSystemConfig());
> }
>
> public void shutdown() {
> this.systemLauncher.shutdown();
> }
>
> private Map<String, Object> createSystemConfig() throws
> IllegalConfigurationException {
> Map<String, Object> attributes = new HashMap<>();
> URL initialConfigUrl =
> BrokerManager.class.getClassLoader().getResource(DEFAULT_INITIAL_CONFIGURATION_LOCATION);
> if (initialConfigUrl == null) {
> throw new IllegalConfigurationException("Configuration location '" +
> DEFAULT_INITIAL_CONFIGURATION_LOCATION + "' not found");
> }
> attributes.put(SystemConfig.TYPE, "Memory");
> attributes.put(SystemConfig.INITIAL_CONFIGURATION_LOCATION,
> initialConfigUrl.toExternalForm());
> attributes.put(SystemConfig.STARTUP_LOGGED_TO_SYSTEM_OUT, true);
> return attributes;
> }
> }
>
> ==================
>
> Any help you can offer or documentation you can point me to as to where/how
> to set the configuration properties on a queue for an in-memory QPID broker
> would be great as I've been failing spectacularly.
>
> For completeness. I've mostly been following this page
> https://novotnyr.github.io/scrolls/qpid-as-mocking-amqp-broker-for-integration-tests/
> and using trial + error
>
> And I am encouraged that this is possible because of the discussion here:
> https://issues.apache.org/jira/browse/QPID-8388
>
> Thanks in advance,
> Simon.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]