[我的交付对象具有BasicProperties。但是在basicproprieties中,标头为null。我需要向标头添加一个值。为此,我使用了构建器模式,因为其中没有setter。
Integer retryIndex = 1;
if (delivery.getProperties().getHeaders() == null) {
delivery.getProperties().builder().headers(new HashMap<>()).build();
}
if (delivery.getProperties().getHeaders().containsKey(KEY_RETRY_COUNT)){
retryIndex = (Integer) delivery.getProperties().getHeaders().get(KEY_RETRY_COUNT);
retryIndex++;
}
delivery.getProperties().getHeaders().put(KEY_RETRY_COUNT, retryIndex);
当条件为if(delivery.getProperties()。getHeaders()。containsKey(KEY_RETRY_COUNT))获得nullPointErexception时,我第二次运行代码。有人可以帮上忙。
Delivery del = null;
if (delivery.getProperties().getHeaders() == null) {
Map<String, Object> header = new HashMap<>();
header.put(KEY_RETRY_COUNT, retryIndex);
delivery.getProperties().builder().headers(header).build();
del = new Delivery(delivery.getEnvelope(),
new AMQP.BasicProperties().builder().headers(header).build(),
delivery.getBody());
}
这里我创建一个新的Delivery对象,并使用构造函数来设置属性。