-module(procedure). -export([procedure/2,consume/0]). consume() -> receive X -> case X<10 of true ->io:format("production consume ~w~n",[X]),consume(); false ->io:format("work done ~n") end end. procedure(Pid,Num) when Num=<10 -> Pid ! Num, timer:sleep(500), procedure(Pid,Num+1); procedure(Pid,Num) -> io:format("work done ~n").
erlang感觉语法蛮有意思的 就写了写
调用:
26> c("procedure"). procedure.erl:18: Warning: variable 'Num' is unused procedure.erl:18: Warning: variable 'Pid' is unused {ok,procedure} 27> Pid=spawn(fun procedure:consume/0). ** exception error: no match of right hand side value <0.106.0> 28> f(). ok 29> Pid=spawn(fun procedure:consume/0). <0.110.0> 30> procedure:procedure(Pid,0). production consume 0 production consume 1 production consume 2 production consume 3 production consume 4 production consume 5 production consume 6 production consume 7 production consume 8 production consume 9 work donework done ok
内容也很简单 一个消费者监听着 生产者每隔0.5秒发送一次信息给消费者 消费者输出 一共循环10次(参数是0的话)
erlang编程一些语法细节蛮蛋疼的...
比如 if receive和case中每项用的是 ; 然后最后一项不要写符号 因为后面跟了个end
并列的语句之间写 ,
不注意就会写错
相关推荐
在实际应用中,开发者可以利用RabbitMQ实现微服务间的异步通信,通过创建生产者和消费者来发送和接收消息。Erlang的强大力量在于其对分布式系统和并发处理的支持,这使得RabbitMQ成为许多大型分布式系统中不可或缺的...
1. **并发性**:RabbitMQ中的每一个连接、通道、消费者都可以看作一个Erlang进程,充分利用Erlang的并发优势,处理大量并发请求。 2. **稳定性**:Erlang的容错性使得RabbitMQ能够优雅地处理故障,确保服务的连续性...
本套教程围绕“Sqlite3+RabbitMQ+Celery”搭建一个生产者-消费者服务模型,旨在帮助初学者快速理解和实践这一技术栈。 首先,Sqlite3是一个轻量级的关系型数据库,它无需单独的服务器进程,而是以文件形式存储数据...
消息队列的工作原理是生产者将消息发送到队列,消费者从队列中接收并处理消息。RabbitMQ支持多种工作模式,如简单模式、Direct模式、Fanout模式、Topic模式和Header模式,以适应不同的应用场景。例如,Direct模式...
- 使用Erlang SDK,开发者可以直接与RabbitMQ服务器通信,创建生产者和消费者应用,实现消息的发布和订阅。 - Erlang中的`amqp_client`模块提供了与RabbitMQ交互的API,可以用于连接、声明交换机和队列、发送和...
消费者从队列中获取并消费消息,队列中的消息可以被多个消费者同时消费。 3. **绑定(Binding)**:绑定是交换机和队列之间的关系定义,它指定了消息如何从交换机路由到队列。通过设置不同的绑定规则,可以实现灵活...
- **消费者(Consumer)**:接收并处理消息的应用。 在Windows上管理RabbitMQ,你可以使用RabbitMQ提供的管理界面(默认端口55672),或者通过命令行工具rabbitmqctl进行操作。例如,启动/停止RabbitMQ服务、查看...
4. **生产者与消费者**: 使用各种编程语言(如Python、Java、JavaScript等)的RabbitMQ客户端库,编写生产者和消费者代码,实现消息的发送和接收。 **总结** Erlang和RabbitMQ的组合为开发者提供了一种强大、可靠...
通过将消息放入队列,生产者和消费者可以在不同的时间执行,无需等待对方响应,从而实现了异步处理。此外,消息队列还可以用作负载均衡工具,通过缓存消息来避免系统的瞬时压力。 在实际应用中,你需要了解如何创建...
Spring框架提供了`org.springframework.amqp`包,包含一系列的API和注解,使得创建RabbitMQ消费者和生产者变得直观。Spring Boot自动配置特性则进一步简化了这个过程,只需少量配置就能启动并运行RabbitMQ连接。 在...
- **消息队列**:RabbitMQ 是一个中间件,它接收并转发消息,确保生产者和消费者之间的解耦。消息可以存储在队列中,等待消费者处理。 - **AMQP 协议**:AMQP 是一种标准的消息协议,支持多种编程语言,使得跨平台...
队列是持久化的,可以有多个消费者同时监听,但每条消息只会被一个消费者消费。 3. **Binding**:绑定是连接交换器和队列的规则,定义了消息如何从交换器流入队列。 4. **Producer**:生产者是发布消息到RabbitMQ...
- **消费者(Consumers)**:消费者是从队列中获取并处理消息的应用。 在实际应用中,你可以使用RabbitMQ实现诸如任务调度、日志收集、异步处理等多种功能。例如,在微服务架构中,RabbitMQ可以作为服务间通信的...
5. **发布和消费消息**:生产者通过交换机发送消息,消费者从队列中接收消息。 6. **虚拟主机**:虚拟主机是RabbitMQ中的命名空间,可以创建多个虚拟主机来隔离不同应用或团队的资源。 以上就是RabbitMQ和Erlang的...
例如,创建一个简单的生产者: ```java import com.rabbitmq.client.*; public class RabbitMQProducer { public static void main(String[] args) throws Exception { ConnectionFactory factory = new ...
注意本产品包括由开发的软件Brod-适用于Erlang / Elixir的Apache Kafka客户端Brod是Apache Kafka协议的Erlang实现,为生产者和消费者提供支持。 为什么要“混血”? 特征支持Apache Kafka v0.8 + 可靠的生产者实现,...
- **消息队列**:RabbitMQ 作为消息队列,负责接收、存储和转发消息,确保消息的可靠传输,即使在生产者和消费者之间有网络问题或延迟时。 - **AMQP 协议**:RabbitMQ 实现了 AMQP,这是一种标准的消息传递协议,...
- 生产者和消费者:编写应用程序,利用AMQP库连接RabbitMQ,发送和接收消息。 5. **最佳实践**: - 监控:使用RabbitMQ的监控工具或第三方插件监控性能和健康状况。 - 安全性:配置访问控制,限制用户权限,使用...
以下是一个简单的Java生产者示例: ```java import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; public class Producer { public ...
消息队列的主要作用是实现生产者和消费者的解耦,即生产者负责发送消息,而消费者负责接收消息,两者之间不直接交互,仅通过消息队列进行数据通信。这种方式可以提高系统的灵活性和可伸缩性,同时也能实现任务的异步...