繁体   English   中英

什么是在运行时存储类属性和加载的好方法?

[英]What's a good way to store class properties and load at run time?

我有一个消息传递生产者(RabbitMQ),根据我必须发送的消息类型,我需要更改路由密钥并在运行时进行交换。

鉴于此,我已经实施了一种策略来为每个类加载特定的属性,但这并不是一个好的解决方案。

例如:

    public class MyProducerStrategy1 extends RabbitMessagingProducer {

    private static final String ROUTING_KEY = "order1";
    private static final String EXCHANGE = "myexchange1";

    @Override
    String getRoutingKey() {
        return ROUTING_KEY;
    }

    @Override
    String getExchange() {
        return EXCHANGE;
    }

    @Override
    public void sendMessage(Message message) {
        super.sendMessage(message);
    }
}


public class MyProducerStrategy2 extends RabbitMessagingProducer {

    private static final String ROUTING_KEY = "fullfilment";
    private static final String EXCHANGE = "myexchange2";

    @Override
    String getRoutingKey() {
        return ROUTING_KEY;
    }

    @Override
    String getExchange() {
        return EXCHANGE;
    }

    @Override
    public void sendMessage(Message message) {
        super.sendMessage(message);
    }
}

public abstract class RabbitMessagingProducer implements MessagingProducerStrategy {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    abstract String getRoutingKey();

    abstract String getExchange();

    @Override
    public void sendMessage(Message message) {
        rabbitTemplate.convertAndSend(getExchange(), getRoutingKey(), message);
    }
}

是否有意义? 还是有另一种方法来加载属性并拥有一个类?

不要为此方案创建多个类。

  1. 根据消息从属性文件加载文件。

  2. 另一种选择是创建一个静态值映射,以消息类型作为键,并以路由键作为值。 根据消息类型从映射中获取值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM