envelope相关知识
-
Java 50:WebService&CXF使用WebService• WebService通过HTTP POST方式接受客户的请求• WebService与客户端之间一般使用SOAP协议传输XML数据• 它本身就是为了跨平台或跨语言而设计的网络上提供的服务:http://webxml.com.cn/ XML 版 HTTP SOAP 简单对象访问协议 SOAP作为一个基于XML语言的协议用于在网上传输数据。 SOAP = 在HTTP的基础上+XML数据。 SOAP是基于HTTP的。 SOAP的组成如下: Envelope – 必须的部分。以XML的根元素出现。 Headers – 可选的。 Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。 WSDL web服务描述语言 就是一个文档 用于描述当前服务的一些信息 服务名称 service 标签的name 服务的发布地址 address 标签的location 服务提供懂得方法 operatioin 标签的name
-
Java :WebService&CXF使用WebService• WebService通过HTTP POST方式接受客户的请求• WebService与客户端之间一般使用SOAP协议传输XML数据• 它本身就是为了跨平台或跨语言而设计的网络上提供的服务:http://webxml.com.cn/ XML 版 HTTP SOAP 简单对象访问协议 SOAP作为一个基于XML语言的协议用于在网上传输数据。 SOAP = 在HTTP的基础上+XML数据。 SOAP是基于HTTP的。 SOAP的组成如下: Envelope – 必须的部分。以XML的根元素出现。 Headers – 可选的。 Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。 WSDL web服务描述语言 就是一个文档 用于描述当前服务的一些信息 服务名称 service 标签的name 服务的发布地址 address 标签的location 服务提供懂得方法 operatioin 标签的name
-
c#:WebService及其几种调用方式之前做移动端开发,都不清楚WebService是啥东东,现在接触c#,项目中有三处WebService调用,就不得不与其打交道了,最近碰上第三方接口地址更换,而自己项目因功能也需要增加WebService方法,所以了解了下WebService及其调用。C-sharp in itlao5.com一、概念WebService:我们可以理解为基于web的服务,它具有跨语言,跨平台的特性,通过web/http的方式实现远程调用,可以让程序的数据操作与功能模块分离。WebService的几个基础概念:XML:扩展性标记语言,用于传输格式化的数据,是Web服务的基础;WSDL:Web服务描述语言,通过xml的形式描述服务的地址及调用方式;SOAP:基于http+xml的简单对象访问协议,用于数据的网络传输。SOAP主要有以下几个节点:Envelope(必须) – 以XML的根元素出现;Headers(可选) – 常添加一些身份验证数据;Body(必须) – 包含要执行的服务器的方法和发送到服务器的数据。示例:<E
-
最原创的验证码产生过程,桃花朵朵开Insus.NET实现一个最炫最原创的验证码。你可以从下面的一步一步的演译。实现一个验证码,需要了解的是,它最基本是随机产生字符串:《在ASP.NET MVC应用程序中随机获取一个字符串》http://www.cnblogs.com/insus/p/3619224.html 随机的字符串准备好,由于是在MVC应用程序实现,还得了解显示图片:《MVC显示Base64图片》http://www.cnblogs.com/insus/p/3621199.html开始尝试实现《ASP.NET MVC验证码演示》http://www.cnblogs.com/insus/p/3622116.html 这篇的验证码,是参考网上的,使用以前asp.NET传统的方式,Generic Handler的ashx来实现。觉得现在是学习MVC,那想不需要ashx了,直接在控制器的Action来实现,因此产生下一篇《ASP.NET MVC验证码演示(Ver2)》http://www.cnblogs.com/insus
envelope相关课程
envelope相关教程
- 3.2 工作队列模式代码实操 我们来看工作队列模式的代码实现:实现代码:ConnectionFactory connectionFactory = new ConnectionFactory();connectionFactory.setHost("192.168.0.1");connectionFactory.setPort(5672);connectionFactory.setUsername("guest");connectionFactory.setPassword("guest");Connection connection = connectionFactory.newConnection();Channel channel = connection.createChannel();Consumer consumer = new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,byte[] body) throws IOException { String msg = new String(body, "UTF-8"); // 业务处理 }};channel.basicConsume(QUEUE_NAME, true, consumer);channel.close();connection.close();代码解释:第 1-7 行,代码和第一种业务场景相似,这里不再赘述。第 8-16 行,我们通过使用 new DefaultConsumer 匿名内部类的形式,来依次从消息队列中获取消息,在获取到消息之后,我们可以再 handleDevelivery 方法中处理我们的业务逻辑。第 17 行,我们使用 channel 的 basicConsume 方法来将我们获取到的消息进行一个消费。事实上,我们应该使用 for 循环,或者动态获取的方式,来指定我们工作队列模式中,所需要的消费者数量,这样我们才能实现一种没有交换机的消息群发模式,这就是工作队列模式。Tips: 我们可以发现,在实现普通队列模式和工作队列模式时,我们并没有指定 Routing Key ,因为这两种消息发送模式不需要指定,这里需要同学们注意。
- 3. 消息重回队列机制概述 基础概念:消息重回队列机制,是描述那些没有被成功消费的消息与消费端之间的一种保障策略, 其主要目的就是为了存储那些没有被消费者成功消费掉的消息,即在 RabbitMQ 诸多的消息队列中,专门用来存储那些没有被消费者成功消费掉的消息的队列,这种队列就被称为重回队列。那么为什么被称为重回队列呢?因为,在 RabbitMQ 中,如果一条消息没有被消费者成功消费掉,那么这条消息除了会被放到重回队列中之外,RabbitMQ Server 还会从该重回队列中获取到这些消息,并且将这些没有被消费成功的消息重新发送到 RabbitMQ Server 中,再次由消费者进行消费,直到这些消息成功地被消费者消费。从上述消息重回队列的基础概念可以得出,消息重回队列的原理图,如下图所示:我们只看上图的消费端部分,当消息队列中的消息没有被消费者成功消费后,首先 RabbitMQ Server 会返回给消费端一个 nack 的信号;其次,该条没有被消费的消息会被放入重回队列中;最后,RabbitMQ Server 会从这个重回队列中获取该条消息,并重新发送到 RabbitMQ Server 中等待消费。上述过程就是我们的重回队列机制处理未被消费的消息的全过程,同学们需要对此有所了解才行。接下来我们来看一下,消息重回队列如何来进行代码配置。代码实现:实现消息重回队列机制,也是只需要在消费端进行配置即可,代码如下:// 省略客户端连接 RabbitMQ Server 的过程Connection connection = connectionFactory.newConnection();Channel channel = connection.createChanel();DefaultConsumer defaultConsumer = new DefaultCnsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { if (properties.getHeaders().get("type") != "utf-8") { channel.basicNack(envelope.getDeliveryTag(), false, true) } }};代码解释:第 1-2 行,我们创建了客户端连接 RabbitMQ Server 的连接,并且创建了一个 channel 。第 8-11 行,我们在 handleDelivery 方法的内部,添加了一个判断条件,当满足该条件时,意味着该条消息没有被成功消费,返回给消费端 nack 信号,这个过程是通过 channel 的 basicNack 方法实现。Tips: 1. 在 channel 的 basicNack 方法中,方法的第二个参数表示是否批量确认,这里设置为了 false ,表示不进行批量确认,第三个参数表示是否启用消息重回队列,这里设置为了 true ,表示启用重回队列,默认情况下,该属性是 false ,即不启用重回队列; 2. 在实际工作中,我们一般也会关闭消息重回队列,使用 RabbitMQ 自带的措施和打印日志的方式来进行补偿,RabbitMQ 默认会将那些没有被成功消费的消息删除,不会放入重回队列中。
- 2. 什么是消费者 ACK 基础概念:消费者 ACK ,是描述消息与消费者之间的一种确认关系,其主要内容就是用来监听,消息是否已经被消费者成功消费了。我们都知道,当消息成功被发送到 RabbitMQ Server 中,并且经交换机和频道,被路由到了相应的消息队里之后,这些消息就需要等待合适的消费者来接收这些消息,并最终将这些消息进行消费。消费者 ACK 就是在这个过程中间充当了一种监听器的作用,主要就是用来监听这些消息被消费者进行消费的结果,并将消息消费的结果返回给消费者。从上述基础概念中,可以很清晰的得出消费者 ACK 的概念图,如下图所示:根据上图,消息在被成功发送到 RabbitMQ Server 中之后,消费端从相应的消息队列中获取到了消息,并在消息被消费之后,给消费端返回了 ACK 信号,这个 ACK 信号的返回一共分为两种结果。第一种 ACK 信号返回结果就是消息已经被成功消费了,这个时候返回给消费端的是 ack 信号,即消息消费成功的确认信号;另一种 ACK 信号返回结果是消息没有被消费成功,这个时候返回给消费端的是 nack 信号,即消息没有被消费者消费成功。对于这两种返回信号来说,第一种 ACK 返回信息是 RabbitMQ Server 中的消息一旦被成功消费后就会返回给消费端,这个过程是自动的;而另一种 ACK 信号,由于消息在没有被成功消息后,RabbitMQ 会有自带的解决措施,所以此种 ACK 信号需要我们手动来选择,到底是使用 RabbitMQ 自带的解决措施,还是使用消费者 ACK 机制。而无论 RabbitMQ Server 返回给了消费端哪种信号,都需要我们手动来获取消息队列中的消息,并且手动对这些消息进行消费。我们在了解了消费者 ACK 机制的基础概念和作用之后,我们还需要了解在 RabbitMQ 中,如何通过代码来实现 RabbitMQ 的消费者 ACK 机制。代码实现:实现消费者 ACK 机制,只需要在消费端进行配置即可,代码如下:ConnectionFactory connectionFactory = new ConnectionFactory();connectionFactory.setHost("xx");connectionFactory.setPort("5672");connectionFactory.setVirtualHost("/");Connection connection = connectionFactory.newConnection();Channel channel = connection.createChanel();DefaultConsumer defaultConsumer = new DefaultCnsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { channel.basicAck(envelope.getDeliveryTag(), false); }};代码解释:第 1-5 行,我们使用 ConnectionFactory 创建了一个客户端连接 RabbitMQ Server 的连接。第 6 行,我们使用建立好的连接,来创建了一个频道 channel 。第 7-10 行,我们使用手动创建 DefaultConsumer 的方式来手动从消息队列中获取消息并进行消费,其中,此种手动创建 Consumer 的方式需要通过匿名内部类的方式来实现,在类的内部,还需要重写 handleDelivery 方法,该方法的第一个参数,是消费者的标签,第二个参数是当前消费者所处的环境信息,第三个参数和第四个参数分别为消息的 properties 参数和消息体。第 12 行,我们使用了 channel 的 basicAck 方法,来对消息进行消费 ACK ,即一旦消息被成功消费,就会通过 basicAck 方法将第一种 ACK 信号返回给消费端。Tips: 1.handleDeliery 方法是进行消息有没有被消费的方法,我们只有重写了该方法,才能手动监听到消息有没有被消费; 2. channel 的 basicAck 方法的第一个参数就是当前消费者的标签,第二个参数表示是否启用 RabbitMQ 的消费者自动 ACK ,如果要想手动对消费端进行 ACK ,那么这个属性一定不要开启,即将该属性的值设置为 false ,关闭消费端的 autoAck 才行。
- 绘制圆弧 canvas详细教程
- xml 数据解析 零基础 Android 入门,精华知识点提取
- 4. JSON、ProtoBuf 渲染 分布式电商系统
envelope相关搜索
-
e preventdefault
e4a
each
each的用法
easter
easter day
easyui
easyui 官网
echarts
eclipse
eclipse 64位下载
eclipse android
eclipse tomcat
eclipse 教程
eclipse 快捷键
eclipseadt
eclipse安装教程
eclipse插件
eclipse插件下载
eclipse教程