Fanout 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Fanout 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Fanout 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache-2.0
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织
地区 国产
投 递 者 sunfmin
适用人群 未知
收录时间 2015-07-24

软件简介

Fanout 可以让编写平行代码更加容易。Fanout 的代码是可以重复使用的,所以你可以很容易地就写下平行代码,而不用担心 fatal error: all goroutines are asleep - deadlock!

示例代码:

for _, word := range domainWords {
    if strings.TrimSpace(word) == "" {
        continue
    }
    py := pinyin.Convert(word)
    pydowncase := strings.ToLower(py)
    domain := pydowncase + ".com"
    outr, err := domainAvailable(word, domain)
    if err != nil {
        fmt.Println("Error: ", err)
        continue
    }
    if outr.available {
        fmt.Printf("[Ohh Yeah] %s %s\n", outr.word, outr.domain)
        continue
    }
    fmt.Printf("\t\t\t %s %s %s\n", outr.word, outr.domain, outr.summary)
}
type checkResult struct {
    word      string
    domain    string
    available bool
    summary   string
}
func domainAvailable(word string, domain string) (ch checkResult, err error) {
    var summary string
    var output []byte
    ch.word = word
    ch.domain = domain
    cmd := exec.Command("whois", domain)
    output, err = cmd.Output()
    if err != nil {
        fmt.Println(err)
        return
    }
    outputstring := string(output)
    if strings.Contains(outputstring, "No match for \"") {
        ch.available = true
        return
    }
    summary = firstLineOf(outputstring, "Registrant Name") + " => "
    summary = summary + firstLineOf(outputstring, "Expiration Date")
    ch.summary = summary
    return
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
2018/07/04 15:55

订阅模式 - fanout

package com.shi.ps; import java.io.IOException; import java.util.concurrent.TimeoutException; import org.junit.Test; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConsumerCancelledException; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.QueueingConsumer.Delivery; import com.rabbitmq.client.ShutdownS...

0
0
发表了博客
2018/01/05 16:01

Exchange-fanout 广播模式

一、前言   我们看到生产者将消息投递到Queue中,实际上这在RabbitMQ中这种事情永远都不会发生。实际的情况是,生产者将消息发送到Exchange(交换器,下图中的X),由Exchange将消息路由到一个或多个Queue中(或者丢弃)。   RabbitMQ中的Exchange有四种类型,不同的类型有着不同的路由策略,RabbitMQ常用的Exchange Type有fanout、direct、topic、headers这四种。Exchange是按照什么逻辑将消息路由到Queue的?RabbitMQ中通...

0
0
发表了博客
2016/12/09 17:36

RabbitMQ (2) Exchange类型:fanout

Exchange类型之 fanout: 基本概念:它会把所有发送到该Exchange中的消息,发送到所有与它绑定的Queue中(信息是完整的)。 这是最简单的Exchange类型,没有任何约束。 这里重点是Exchange和Queue的绑定 第三个参数为routingKey,fanout类型并不需要,可以为“”,但不能为null,否则会抛处错误。 channel.queueBind(queueName, exchangeName, ""); 发送端: package sunf.rabbitMQTest; import java.io.IOException; import ...

0
0
2014/08/26 16:12

spring接收qpid fanout 消息

<!-- qpid connectionFactorys -->      <bean id="qpidConnectionFactory_in_1" class="org.apache.qpid.client.AMQConnectionFactory">     <constructor-arg value="amqp://guest:guest@test/?brokerlist='tcp://192.168.1.230:5672'" />   </bean>      <!-- destinations -->   <bean id="qpid_queue_in_1" class="org.apache.qpid.client.AMQAnyDestination">     <constructor-arg value="BURL:fanout://HENRY_MSG_GA...

0
0
发表于服务端专区
2020/05/24 14:08

Bilibili Kratos 框架源码分析(3) -- fanout 异步

在写项目代码时如果遇到需要异步处理时, 如异步更新 redis, 异步比对数据等等, 我们的常规处理一般是 MQ. 但有的时候我们的操作其实很简单, 写 MQ 显得又太重了, 那么该如何在程序里实现一个异步功能? 本篇文章就介绍下 Kratos 官方 wiki 没有提到的功能 Fanout. 其实Fanout 在 生成的 kratos-demo 里面是有体现的, 只是没有 demo 而已 type dao struct {  ...  cache      *fanout.Fanout  ... } func newDao(r ...

0
0
发表于运维专区
2019/01/28 17:07

20161021 路由 - fanout 交换机无参绑多队列

目的 验证rabbitmq的 finout方式交换机无参绑定多个队列的配置及使用。 环境 实验室环境的 3 台 Rabbit MQ 服务器,已经配置好集群。 过程 1 新建一个用户,用户名和密码都是 test $ rabbitmqctl add_user test test Creating user "test" ... 2 新建一个名称为 test 的 Virtual Hosts $ rabbitmqctl add_vhost test Creating vhost "test" ... 3 设置该用户在该 Virtual Hosts 的权限,权限为可进行任何操作 $ rabbitmqctl ...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部