jmeter-amqp-plugin icon indicating copy to clipboard operation
jmeter-amqp-plugin copied to clipboard

Unable to send messages direct to queues which have a DEAD-LETTER associated.

Open markslilley opened this issue 2 years ago • 1 comments

I'm trying to fork this and add X-DEAD-LETTER-EXCHANGE and X-DEAD-LETTER-ROUTING-KEY. This will enable direct to queue messages where there is a dead letter attached. I have added fields to AMQPSampler.java and AMQPSamplerGui.java is there anything else I need to update?

When I publish messages with this amended code I see messages land on the Rabbit Overview page but the message does not arrive in the queue (with an attached DEAD LETTER linked)

I've added to AMQPSampler.java

    private static final String X_DEAD_LETTER_EXCHANGE     = "AMQPSampler.XDeadLetterExchange";
    private static final String X_DEAD_LETTER_ROUTING_KEY  = "AMQPSampler.XDeadLetterRoutingKey";
    
    public static final String DEFAULT_X_DEAD_LETTER_EXCHANGE = "jmeterDeadLetterExchange";
    public static final String DEFAULT_X_DEAD_LETTER_ROUTING_KEY = "jmeterDeadLetterRoutingKey";
    
    if (getXDeadLetterExchange() != null && !getXDeadLetterExchange().isEmpty()) {
        arguments.put("x-dead-letter-exchange", getXDeadLetterExchange());
    }

    if (getXDeadLetterRoutingKey() != null && !getXDeadLetterRoutingKey().isEmpty()) {
        arguments.put("x-dead-letter-routing-key", getXDeadLetterRoutingKey());
    }
    
    public String getXDeadLetterRoutingKey() {
        return getPropertyAsString(X_DEAD_LETTER_ROUTING_KEY);
    }

    public void setXDeadLetterExchange(String name) {
        setProperty(X_DEAD_LETTER_EXCHANGE, name);
    }

    public void setXDeadLetterRoutingKey(String name) {
        setProperty(X_DEAD_LETTER_ROUTING_KEY, name);
    }

Added the following to AMQPSamplerGui.java

    protected JLabeledTextField xDeadLetterExchange = new JLabeledTextField("x-dead-letter-exchange");
    protected JLabeledTextField xDeadLetterRoutingKey = new JLabeledTextField("x-dead-letter-routing-key");

    xDeadLetterExchange.setText(sampler.getXDeadLetterExchange());
    xDeadLetterRoutingKey.setText(sampler.getXDeadLetterRoutingKey());

    xDeadLetterExchange.setText(AMQPSampler.DEFAULT_X_DEAD_LETTER_EXCHANGE);
    xDeadLetterRoutingKey.setText(AMQPSampler.DEFAULT_X_DEAD_LETTER_ROUTING_KEY);

    sampler.setXDeadLetterExchange(xDeadLetterExchange.getText());
    sampler.setXDeadLetterRoutingKey(xDeadLetterRoutingKey.getText());

    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 4;
    queueSettings.add(xDeadLetterExchange, gridBagConstraints);

    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 5;
    queueSettings.add(xDeadLetterRoutingKey, gridBagConstraints);
    

Amended GUI showing new fields.

image

markslilley avatar Jan 03 '23 14:01 markslilley

Hello,

Is this feature going to be released?

jddma avatar Apr 01 '24 13:04 jddma