精华内容
下载资源
问答
  • Java Topic

    2014-11-21 17:01:24
    每个Java开发者都应该知道的5个JDK工具. http://www.csdn.net/article/2014-11-20/2822750-5-JDK-Tools-Every-Java-Developer-Should-Know?reload=1

    每个Java开发者都应该知道的5个JDK工具.

    http://www.csdn.net/article/2014-11-20/2822750-5-JDK-Tools-Every-Java-Developer-Should-Know?reload=1

    介绍了:

    javap 反汇编程序,可以查看Java编译器生成的字节码.

    Jvisualvm JVM监控和分析工具.

    Jcmd 用来把诊断命令请求发送到Java JVM.

    Jhat Java Heap analysis tool. 诊断和浏览堆文件.

    Oracle Java Mission Control .主要用来统一HotSpot、JRockit VMs

     

    Java JDK Tools.

    http://javapapers.com/java/java-jdk-tools/

    简单介绍了jdk 的工具






    展开全文
  • I want to creat a topic by using java. There are my codes.String s = "--topic pt8 --create --zookeeper 10.11.6.52:2181 --replica-assignment 7";String[] args2 = s.split(" ");TopicCommand.main(args2);Bu...

    I want to creat a topic by using java. There are my codes.

    String s = "--topic pt8 --create --zookeeper 10.11.6.52:2181 --replica-assignment 7";

    String[] args2 = s.split(" ");

    TopicCommand.main(args2);

    But there is an error:

    [ZkClient-EventThread-14-10.11.6.52:2181] INFO o.I.z.ZkEventThread - Starting ZkClient event thread.

    [main] INFO o.I.z.ZkClient - Waiting for keeper state SyncConnected [main-EventThread] INFO o.I.z.ZkClient - zookeeper state changed (SyncConnected)

    Error while executing topic command : java.lang.ExceptionInInitializerError

    [ZkClient-EventThread-14-10.11.6.52:2181] INFO o.I.z.ZkEventThread - Terminate ZkClient event thread.

    --list --zookeeper 10.11.6.52:2181 can get results. --delete --zookeeper 10.11.6.52:2181 --topic pt7 gets Error while executing topic command : null.

    My pom.xml:

    org.apache.kafka

    kafka_2.11

    0.10.2.1

    org.apache.kafka

    kafka-clients

    0.10.2.1

    Using Admin:

    ZkClient zkClient = new ZkClient("10.11.6.52:2181", 30000, 30000, ZKStringSerializer$.MODULE$);

    ZkUtils zkUtils = ZkUtils.apply(zkClient, false);

    AdminUtils.createTopic(zkUtils, "pt8", 1, 1, new Properties(), RackAwareMode.Disabled$.MODULE$);

    ERROR:

    Exception in thread "main" kafka.admin.AdminOperationException: java.lang.ExceptionInInitializerError

    展开全文
  • <div><p>The PL/Java extension package will not include an embedded Java runtime [ci skip]</p><p>该提问来源于开源项目:greenplum-db/gpdb</p></div>
  • 可参照github代码:https://github.com/rabbitmq/rabbitmq-tutorials/blob/master/java/EmitLogTopic.java1. 新建maven项目2. 在pom.xml中添加rabbitmq依赖com.rabbitmqamqp-client2.8.23. 在pom.xml中添加...

    可参照github代码:https://github.com/rabbitmq/rabbitmq-tutorials/blob/master/java/EmitLogTopic.java

    1. 新建maven项目

    2. 在pom.xml中添加rabbitmq依赖

    com.rabbitmq

    amqp-client

    2.8.2

    3. 在pom.xml中添加junit

    junit

    junit

    4.11

    test

    4. 新建send_msg类,发送消息:

    package stream.rabbitmq.client;

    import com.rabbitmq.client.Channel;

    import com.rabbitmq.client.Connection;

    import com.rabbitmq.client.ConnectionFactory;

    /**

    * Created by sarah on 16/10/21.

    */

    public class send_msg {

    private static final String EXCHANGE_NAME = "osc_topic";

    public static void main(String[] argv){

    Connection connection = null;

    Channel channel = null;

    try {

    ConnectionFactory factory = new ConnectionFactory();

    factory.setHost("vpcb-talaris-mq-1.vm.elenet.me");

    factory.setVirtualHost("talaris");

    factory.setPort(5672);

    factory.setUsername("talaris");

    factory.setPassword("talaris");

    connection = factory.newConnection();

    channel = connection.createChannel();

    // channel.exchangeDeclare(EXCHANGE_NAME, "topic"); -- 若exchange已经定义,就不能再重复定义了

    String routingkey = "action.order.online_pay_make"; //getRouting(argv);

    String message = "Hello World!"; //getMessage(argv);

    channel.basicPublish(EXCHANGE_NAME, routingkey, null, message.getBytes("UTF-8"));

    System.out.println(" [x] Sent '" + routingkey + "':'" + message + "'");

    }

    catch (Exception e) {

    e.printStackTrace();

    }

    finally {

    if (connection != null) {

    try {

    connection.close();

    } catch (Exception ignore) {}

    }

    }

    }

    }

    展开全文
  • 参考:http://www.rabbitmq.com/tutorials/tutorial-five-java.html源码:https://github.com/zuzhaoyue/JavaDemo主题(使用Java客户端)先决条件本教程假定RabbitMQ在标准端口(5672)上的本地主机上安装并运行。如果您...

    参考:http://www.rabbitmq.com/tutorials/tutorial-five-java.html

    源码:https://github.com/zuzhaoyue/JavaDemo

    主题

    (使用Java客户端)

    先决条件

    本教程假定RabbitMQ在标准端口(5672)上的本地主机上安装并运行。如果您使用不同的主机,端口或证书,则连接设置需要进行调整。

    在教程四中,我们改进了日志记录系统。我们没有使用只有虚拟广播的fanout交换机,而是使用了direct交换机,并获得了选择性接收日志的可能性。

    尽管使用直接交换改进了我们的系统,但它仍然有局限性 - 它不能根据多个规则进行路由。

    在我们的日志系统中,我们可能不仅需要根据严重等级来订阅日志,还要根据发布日志的来源进行订阅。您可能从syslogunix工具知道这个概念,该工具根据严重性(info/warn/error...)和工具(auth / cron / kern ...)来路由日志。

    这会给我们很大的灵活性 - 我们可能想听取来自'cron'的严重错误,而且还听取来自'kern'的所有日志。

    为了在我们的日志系统中实现这一点,我们需要了解更复杂的topic交换。

    Topic exchange

    发送到topic exchange的消息不是一个随意的routing_key- 它必须是由点分隔的单词列表。单词可以是任何东西,但通常它们指定了与该消息相关的一些功能。一些有效的路由键例子如下:“stock.usd.nyse”,“nyse.vmw”,“quick.orange.rabbit”。只要您愿意,路由键中可以有多少个字,最多255个字节。

    绑定键也必须是相同的形式。topic交换背后的逻辑类似于direct exchange- 使用特定路由键发送的消息将被传递到与匹配绑定键绑定的所有队列。绑定键有两个重要的特殊用法:

    *(星号)可以代替一个单词。

    #(散列)可以替代零个或多个单词。

    在一个例子中解释这个很简单:

    df65347f930f4fba0f2545f74fa05edd.png

    在这个例子中,我们将发送所有描述动物的消息。消息将使用由三个字(两个点)组成的路由键发送。路由关键字中的第一个单词将描述速度,第二个颜色和第三个种类:“..”。

    我们创建了三个绑定:Q1绑定了绑定键“* .orange。*”,Q2绑定了“*。*。rabbit”和“lazy。#”。

    这些绑定可以概括为:

    Q1对所有的橙色动物都感兴趣。

    Q2希望听到关于兔子的一切,以及关于懒惰的一切。

    将路由键设置为“quick.orange.rabbit”的消息将传递到两个队列。消息“lazy.orange.elephant”也会传送到他们两个。另一方面,“quick.orange.fox”只会进入第一个队列,而“lazy.brown.fox”只会进入第二个队列。“lazy.pink.rabbit”只会传递到第二个队列一次,即使第二个队列匹配了两个绑定。“quick.brown.fox”不匹配任何绑定,因此将被丢弃。

    如果我们违反我们的规则并发送带有一个或四个单词的消息,如“orange”或“quick.orange.male.rabbit”,这些消息将不匹配任何绑定,于是会被丢失。

    另一方面,“lazy.orange.male.rabbit”即使有四个单词,也会匹配最后一个绑定,并将传递到第二个队列。

    topic exchange

    topic exchage功能强大,可以像其他exchange一样行事。

    当使用“#”(hash)绑定键绑定队列时,它将接收所有消息,而不管路由密钥如何 - 就像在fanout exchange中一样。

    当在绑定中没有使用特殊字符“*”(星号)和“#”(hash)时,topic将像direct一样。

    把以上放在一起

    我们将在我们的日志系统中使用topic。我们首先假定日志的路由键有两个词:“。”。

    代码几乎与的代码相同 。

    生产者EmitLogTopic.java代码如下:

    //package rmq.topics;

    /*** Created by zuzhaoyue on 18/5/17.*/

    importcom.rabbitmq.client.BuiltinExchangeType;importcom.rabbitmq.client.ConnectionFactory;importcom.rabbitmq.client.Connection;importcom.rabbitmq.client.Channel;public classEmitLogTopic {private static final String EXCHANGE_NAME = "topic_logs";public static voidmain(String[] argv) {

    System.out.println("参数是:" +argv.toString());

    Connection connection= null;

    Channel channel= null;try{

    ConnectionFactory factory= newConnectionFactory();

    factory.setHost("localhost");

    connection=factory.newConnection();

    channel=connection.createChannel();

    channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.TOPIC);

    String routingKey=getRouting(argv);

    String message=getMessage(argv);

    channel.basicPublish(EXCHANGE_NAME, routingKey,null, message.getBytes("UTF-8"));

    System.out.println(" [x] Sent '" + routingKey + "':'" + message + "'");

    }catch(Exception e) {

    e.printStackTrace();

    }finally{if (connection != null) {try{

    connection.close();

    }catch(Exception ignore) {}

    }

    }

    }//若没有参数 ,则返回anoymous.info//若有参数 ,则返回参数第一个

    private staticString getRouting(String[] strings){if (strings.length < 1)return "anonymous.info";return strings[0];

    }//若参数个数小于2,则返回hello world,否则返回joinstring()相应的值

    private staticString getMessage(String[] strings){if (strings.length < 2)return "Hello World!";return joinStrings(strings, " ", 1);

    }//返回输入的数组中从startindex开始的值,这些值以delimeter为分隔符。

    private static String joinStrings(String[] strings, String delimiter, intstartIndex) {int length =strings.length;if (length == 0 ) return "";if (length < startIndex ) return "";

    StringBuilder words= newStringBuilder(strings[startIndex]);for (int i = startIndex + 1; i < length; i++) {

    words.append(delimiter).append(strings[i]);

    }returnwords.toString();

    }

    }

    消费者ReceiveLogsTopic.java代码如下:

    //package rmq.topics;

    /*** Created by zuzhaoyue on 18/5/17.*/

    import com.rabbitmq.client.*;importjava.io.IOException;public classReceiveLogsTopic {private static final String EXCHANGE_NAME = "topic_logs";public static void main(String[] argv) throwsException {

    ConnectionFactory factory= newConnectionFactory();

    factory.setHost("localhost");

    Connection connection=factory.newConnection();

    Channel channel=connection.createChannel();

    channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.TOPIC);

    String queueName=channel.queueDeclare().getQueue();if (argv.length < 1) {

    System.err.println("Usage: ReceiveLogsTopic [binding_key]...");

    System.exit(1);

    }for(String bindingKey : argv) {

    channel.queueBind(queueName, EXCHANGE_NAME, bindingKey);

    }

    System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

    Consumer consumer= newDefaultConsumer(channel) {

    @Overridepublic voidhandleDelivery(String consumerTag, Envelope envelope,

    AMQP.BasicProperties properties,byte[] body) throwsIOException {

    String message= new String(body, "UTF-8");

    System.out.println(" [x] Received '" + envelope.getRoutingKey() + "':'" + message + "'");

    }

    };

    channel.basicConsume(queueName,true, consumer);

    }

    }

    测试

    1.编译

    javac -cp /data/amqp-client-4.2.0.jar EmitLogTopic.java    ReceiveLogsTopic.java

    2.执行

    1)启动消费者

    打开三个窗口,分别输入以下命令:

    第一个窗口输入java -cp /data/amqp-client-4.2.0.jar:/data/slf4j-api-1.7.21.jar:. ReceiveLogsTopic ""(表示接收所有的消息)

    第二个窗口输入java -cp /data/amqp-client-4.2.0.jar:/data/slf4j-api-1.7.21.jar:. ReceiveLogsTopic "*.critical"(表示接收后缀为critical的消息)

    第三个窗口输入java -cp /data/amqp-client-4.2.0.jar:/data/slf4j-api-1.7.21.jar:. ReceiveLogsTopic "kern.*" "*.critical"(表示接收前缀为kern和后缀为critical的消息)

    2)启动生产者

    依次输入以下命令

    java -cp /data/amqp-client-4.2.0.jar:/data/slf4j-api-1.7.21.jar:. EmitLogTopic "aa.critical"

    java -cp /data/amqp-client-4.2.0.jar:/data/slf4j-api-1.7.21.jar:. EmitLogTopic "kern.0"

    java -cp /data/amqp-client-4.2.0.jar:/data/slf4j-api-1.7.21.jar:. EmitLogTopic "a"

    观察消费者的打印情况,发现已经按照不同的规则进行了接收:

    9079ad6975421abbd9835fcbc66a9912.png

    调试成功~

    展开全文
  • Rabbitmq的使用四_Java Client方式使用Topic模式1.官方文档地址:https://www.rabbitmq.com/tutorials/tutorial-five-java.html2.定义:topic和direct类似,也是将消息发送到RoutingKey和BindingKey相匹配的队列中,...
  • 创建 topic javatestbin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic javatest --partitions 3 --replication-factor 1pom.xmlorg.apache.kafkakafka-clients2.3.0特别注意的需要设置:...
  • 创建 topic javatestbin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic javatest --partitions 3 --replication-factor 1pom.xmlorg.apache.kafkakafka-clients2.3.0特别注意的需要设置:...
  • packagecom.example.demo.topic;importkafka.admin.AdminUtils;importkafka.admin.RackAwareMode;importkafka.server.ConfigType;importkafka.utils.ZkUtils;importorg.apache.kafka.common.requests.MetadataRespon...
  • 在上一篇介绍如何通过java往jms消息队列里面写消息和读取消息,本文介绍如何通过java往jms主题里写消息和读取消息。消息发布同样将消息发布到主题中,需要经过以下步骤连接jms服务器获取连接工厂(Connection Factory...
  • 创建 topic javatestbin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic javatest --partitions 3 --replication-factor 1pom.xmlorg.apache.kafkakafka-clients2.3.0特别注意的需要设置:...
  • *:匹配一个路由键#:匹配多个路由键代码实现:import java.io.IOException;import java.util.concurrent.TimeoutException;import com.rabbitmq.client.BuiltinExchangeType;import com.rabbitmq.client.Channel;...
  • Kafka Java API操作topic

    千次阅读 2017-09-28 11:10:05
    Kafka官方提供了两个脚本来管理topic,包括topic的增删改查。其中kafka-topics.sh负责topic的创建与删除;...上一篇文章中提到了如何使用客户端协议(client protocol)来创建topic,本文则使用服务器端的Java API对t
  • 首先,需要引入Kafka服务器端代码,比如加入Kafka 1.0.0依赖:Mavenorg.apache.kafkakafka_2.121.0.0Gradlecompile group: 'org.apache.kafka', name: 'kafka_2.12', version: '1.0.0'然后编写获取订阅某topic的所有...
  • import java.util.UUID; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; //发送消息端 ...
  • for (Map.Entryreplicas : replicaInfoMap.entrySet()) {if(topic.equals(replicas.getKey().topic())) { sum+=replicas.getValue().size; } } } }returnsum; }private static voidinitialize(String ...
  • Java创建删除Topic

    2020-06-24 22:48:54
    } } 3.KafkaUtil import java.util.Properties; import org.apache.kafka.common.security.JaasUtils; import kafka.admin.AdminUtils; import kafka.admin.RackAwareMode; import kafka.utils.ZkUtils; public ...
  • Xml代码 xmlns=...
  • 一:Jboss的环境配置(略)二:开发环境jboss-4.2.2.GA+JDK1.6三:JMS简单介绍1.当你发送一个消息,你不能直接发送到对此消息感兴趣的接受者。而是你发送到一个目的地。...用topic发布允许一对多,或多对多通讯...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,893
精华内容 3,557
关键字:

javatopic

java 订阅