/* * Copyright (c) 2010-2017. Axon Framework * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.axonframework.boot; import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix = "axon.distributed") public class DistributedCommandBusProperties { /** * Enables DistributedCommandBus configuration for this application */ private boolean enabled = false; private JGroupsProperties jgroups = new JGroupsProperties(); /** * Sets the loadFactor for this node to join with. The loadFactor sets the relative load this node will * receive compared to other nodes in the cluster. Defaults to 100. */ private int loadFactor = 100; public boolean isEnabled() { return enabled || jgroups.isEnabled(); } public void setEnabled(boolean enabled) { this.enabled = enabled; } public int getLoadFactor() { return loadFactor == 100 ? jgroups.getLoadFactor() : loadFactor; } public void setLoadFactor(int loadFactor) { this.loadFactor = loadFactor; } public JGroupsProperties getJgroups() { return jgroups; } public void setJgroups(JGroupsProperties jgroups) { this.jgroups = jgroups; } public static class JGroupsProperties { private Gossip gossip = new Gossip(); /** * Enables JGroups configuration for this application * * @deprecated JGroups specific 'enabled' property is deprecated in favor of the * DistributedCommandBusProperties' 'enabled' property */ @Deprecated private boolean enabled = false; /** * The name of the JGroups cluster to connect to. Defaults to "Axon". */ private String clusterName = "Axon"; /** * The JGroups configuration file to use. Defaults to a TCP Gossip based configuration */ private String configurationFile = "default_tcp_gossip.xml"; /** * The address of the network interface to bind JGroups to. Defaults to a global IP address of this node. */ private String bindAddr = "GLOBAL"; /** * Sets the initial port to bind the JGroups connection to. If this port is taken, JGroups will find the * next available port. */ private String bindPort = "7800"; /** * Sets the loadFactor for this node to join with. The loadFactor sets the relative load this node will * receive compared to other nodes in the cluster. Defaults to 100. * * @deprecated JGroups specific 'loadFactor' property is deprecated in favor of the * DistributedCommandBusProperties' 'loadFactor' property */ @Deprecated private int loadFactor = 100; public Gossip getGossip() { return gossip; } public void setGossip(Gossip gossip) { this.gossip = gossip; } public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } public String getClusterName() { return clusterName; } public void setClusterName(String clusterName) { this.clusterName = clusterName; } public String getConfigurationFile() { return configurationFile; } public void setConfigurationFile(String configurationFile) { this.configurationFile = configurationFile; } public String getBindAddr() { return bindAddr; } public void setBindAddr(String bindAddr) { this.bindAddr = bindAddr; } public String getBindPort() { return bindPort; } public void setBindPort(String bindPort) { this.bindPort = bindPort; } public int getLoadFactor() { return loadFactor; } public void setLoadFactor(int loadFactor) { this.loadFactor = loadFactor; } public static class Gossip { /** * Whether to automatically attempt to start a Gossip Routers. The host and port of the Gossip server * are taken from the first define host in 'hosts'. */ private boolean autoStart = false; /** * Defines the hosts of the Gossip Routers to connect to, in the form of host[port],... * <p> * If autoStart is set to {@code true}, the first host and port are used as bind address and bind port * of the Gossip server to start. * <p> * Defaults to localhost[12001]. */ private String hosts = "localhost[12001]"; public boolean isAutoStart() { return autoStart; } public void setAutoStart(boolean autoStart) { this.autoStart = autoStart; } public String getHosts() { return hosts; } public void setHosts(String hosts) { this.hosts = hosts; } } } }