1 package org.apache.helix.recipes.rabbitmq;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.helix.manager.zk.ZKHelixAdmin;
23 import org.apache.helix.manager.zk.ZNRecordSerializer;
24 import org.apache.helix.manager.zk.ZkClient;
25 import org.apache.helix.model.IdealState.IdealStateModeProperty;
26 import org.apache.helix.model.StateModelDefinition;
27 import org.apache.helix.tools.StateModelConfigGenerator;
28
29 public class SetupConsumerCluster
30 {
31 public static final String DEFAULT_CLUSTER_NAME = "rabbitmq-consumer-cluster";
32 public static final String DEFAULT_RESOURCE_NAME = "topic";
33 public static final int DEFAULT_PARTITION_NUMBER = 6;
34 public static final String DEFAULT_STATE_MODEL = "OnlineOffline";
35
36 public static void main(String[] args)
37 {
38 if (args.length < 1)
39 {
40 System.err.println("USAGE: java SetupConsumerCluster zookeeperAddress (e.g. localhost:2181)");
41 System.exit(1);
42 }
43
44 final String zkAddr = args[0];
45 final String clusterName = DEFAULT_CLUSTER_NAME;
46
47 ZkClient zkclient = null;
48 try
49 {
50 zkclient = new ZkClient(zkAddr, ZkClient.DEFAULT_SESSION_TIMEOUT,
51 ZkClient.DEFAULT_CONNECTION_TIMEOUT, new ZNRecordSerializer());
52 ZKHelixAdmin admin = new ZKHelixAdmin(zkclient);
53
54
55 admin.addCluster(clusterName, true);
56
57
58 StateModelConfigGenerator generator = new StateModelConfigGenerator();
59 admin.addStateModelDef(clusterName, DEFAULT_STATE_MODEL,
60 new StateModelDefinition(generator.generateConfigForOnlineOffline()));
61
62
63 String resourceName = DEFAULT_RESOURCE_NAME;
64 admin.addResource(clusterName, resourceName, DEFAULT_PARTITION_NUMBER, DEFAULT_STATE_MODEL,
65 IdealStateModeProperty.AUTO_REBALANCE.toString());
66
67 admin.rebalance(clusterName, resourceName, 1);
68
69 } finally
70 {
71 if (zkclient != null)
72 {
73 zkclient.close();
74 }
75 }
76 }
77 }