目录

  1. rabbitmq ubuntu下的配置
  2. go 实现rabbitmq的消息收发

1:背景简介

  我是一个.net一线开发,今年6月份离开帝都来到魔都,后入职于莫江互联网在线教育公司。现刚刚转正,在这短短的三个月的时间,莫江给我的是职业路上颠覆性变化。

   .net技术迷 => nodejs/java/golang

  在此之前,我认为我会在.net平台坚定不移的走下,因为我是如此的喜欢C#语言,认为它是那么优美简介,vs ide号称宇宙神器,coding如此happy,but 当我们每周技术讨论例会上,我才真正的认识到我自己原来就是井底之蛙

2:C#和其他我所接触的语言对比

  网上关于C#和java的大战从未停止,我也经常想起大约6年前我上大学的时候,某些无良的培训机构去我们系招人的时候,大量的贬低C#的时候,我在据理力争。然而时间在变,以我这3月多月接触其他语言的同时,也在反思,c#/.net真的有如此之好吗?

  以下仅代表个人观点,如有不对欢迎来喷。

  C#的优势: 神一般的IDE,大量的语法糖,强类型语言支持var声明,良好的错误输出和debug,天生的windows平台支持,兼容性良好的第三方或微软框架,代码提示、跳转、可阅读...

  劣势:开源框架太少,跨平台费劲,语法冗余,依赖.net framework,执行效率堪忧

3:浅谈java

  java语言本身和C#语言80%类型,学起来很轻松,可真的去写java代码的时候,就会感觉完全从天堂掉进了地狱。

  ide难用,不管是eclipse 还是 IntelliJ IDEA ,太痛苦了

  代码提示功能能用,但不强大,调试功能一般,写属性不习惯,没有C#语法糖,依赖jvm

  这些都不足以让人感觉在地狱行走,最难的是。。。。 使用框架。 由于是自学,没人教,视频、贴吧、blog 跟着别人做依然搞不通,框架太多,兼容性却不怎么好。一度怀疑自己怀疑人生

  可是虽然java的框架我不会配置,但我不会否定,java就是那么牛逼,只是我笨,不会用,如山如海的开源项目,让任何一个.net程序员目瞪口呆。

4:再试nodejs

  nodejs呢也是在我们架构会上才知道的(以前的知识面好浅薄。。。),不看不知道,一看吓一跳啊,没想到JavaScript语言也能做后端了,还可以达到这么高的并发。ok  then  学习之~

  nodejs学习简单(web开发人员都会把~),配置简单(npm),依赖少,框架非常非常多,编写web服务器简单,执行效率不错,高并发处理很好...

  最直观的,搞一个web站点,秒刷有木有,按着F5不放刷刷的有木有。好吧原谅我没见过世面,和asp.net 对比一下,觉得弱爆了有木有,不需要经过asp.net管道,不需要asp.net页面生命周期,不需要mvc控制流程。。。不需要,所有都自己写,想怎么写怎么写

  异步回调,单线程处理,很吊很新颖。缺点也很明显,同步执行困难,代码检错麻烦,调试不友好,单线程,做cpu运算可能会造成异步无法回调...

5:go  go

  学习golang语言是如此的痛苦,类C的语法,不完全的面向对象,每次要检查的错误机制,指针(高级语言里面没有用过),环境配置死麻烦,初学很难理解语法。。。

  我曾发过一句牢骚,写半个小时的golang简直比写一上午的C#都累

  然而并不能打消我的激情,因为它的优势太明显了, 比C语法简单却有堪比C的性能,去除了面向对象复杂的语法和限制,使用指针可以根据自己需要操作内存或引用,优美的协程,不需要锁...

6:再啰嗦

  写了这么多,或许有很多地方是不对的是片面的,我也会慢慢完善自己

  

7;为什么是rabbitmq

  最近准备开发一个消息型项目,预计的是一天的消息量达到百万级别,近实时的到达率,最后确定下来确定为采用rabbitmq做消息中转,确保api到sql层数据并发量控制以及防丢失。 本来说打算用windows server来做,可是呢windows server有个缺陷却无法处理,就是它会假死,而且很难去监控,so 我想能不能这层使用golang 来写服务。 结果技术评审下来,因有较大的风险,暂时不采用,可以做一个辅助进程来跑。 我也希望我手里的现有项目能使用go来处理,比如apppush

  这些项目都是用的rabbitmq做消息分发,之前的分发客户端是用C#写的,那个人已经离职,所以我决定用go写一个

8:时间

  因没有用过rabbitmq,也不知道会有什么的结果,花多少精力。因非工作内容,也不会占用工作的时间,so 完成时间也是不确定的。博客园我应该是一周回更新一次或两次进度,仅做为此次行程的记录

9:目标

  我希望我写完的项目,能提供一套完整的稳定的rabbitmq 调度系统的 golang驱动

begin!~~~~~

golang rabbitmq实践(啰嗦)的更多相关文章

  1. golang rabbitmq实践 (二 实现简单的消息收发)

    1:驱动 本来打算自己写一个驱动的,后来发现github上面已经有了,那我就直接拿现成的了, 驱动采用 github.com/streadway/amqp ,直接import就可以啦! 2:excha ...

  2. golang rabbitmq实践 (一 rabbitmq配置)

    1:环境选择 系统为ubuntu 15.04 ,我装在虚拟机里面的 2:rabbitmq tabbitmq 3.5.4  download url : http://www.rabbitmq.com/ ...

  3. Golang Gin实践 番外 请入门 Makefile

    Golang Gin实践 番外 请入门 Makefile 原文地址:Golang Gin实践 番外 请入门 Makefile 前言 含一定复杂度的软件工程,基本上都是先编译 A,再依赖 B,再编译 C ...

  4. Golang 高效实践之并发实践

    前言 在我前面一篇文章Golang受欢迎的原因中已经提到,Golang是在语言层面(runtime)就支持了并发模型.那么作为编程人员,我们在实践Golang的并发编程时,又有什么需要注意的点呢?下面 ...

  5. Golang 高效实践之并发实践context篇

    前言 在上篇Golang高效实践之并发实践channel篇中我给大家介绍了Golang并发模型,详细的介绍了channel的用法,和用select管理channel.比如说我们可以用channel来控 ...

  6. Golang高效实践之泛谈篇

    前言 我博客之前的Golang高效实践系列博客中已经系统的介绍了Golang的一些高效实践建议,例如: <Golang高效实践之interface.reflection.json实践>&l ...

  7. 知乎社区核心业务 Golang 化实践 - 知乎 https://zhuanlan.zhihu.com/p/48039838

    知乎社区核心业务 Golang 化实践 - 知乎 https://zhuanlan.zhihu.com/p/48039838

  8. 【GoLang】golang 最佳实践汇总

    最佳实践 1 包管理 1.1 使用包管理对Golang项目进行管理,如:godep/vendor等工具 1.2 main/init函数使用,init函数参考python 1.2.1 main-> ...

  9. Golang 高效实践之defer、panic、recover实践

    前言 我们知道Golang处理异常是用error返回的方式,然后调用方根据error的值走不同的处理逻辑.但是,如果程序触发其他的严重异常,比如说数组越界,程序就要直接崩溃.Golang有没有一种异常 ...

随机推荐

  1. 关于Tomcat配置问题

    一,部署并启动Tomcat服务器 Tomcat: 开源的 Servlet 容器. 解压 apache-tomcat-6.0.16.zip 到一个非中文目录下 配置一个环境变量. java_home(指 ...

  2. [转帖]虚拟内存探究 -- 第四篇:malloc, heap & the program break

    虚拟内存探究 -- 第四篇:malloc, heap & the program break http://blog.coderhuo.tech/2017/10/19/Virtual_Memo ...

  3. 初步学习jquery学习笔记(一)

    什么是jquery? Jquery是javascript的一个函数库包含以下功能: html元素选取 html元素的操作 css操作 html事件的函数 javacript的特效 html的遍历和修改 ...

  4. kafka 教程(一)-初识kafka

    消息队列 MQ 消息队列就是 消息 message 加 队列 queue,是一种消息传输的容器,提供生产和消费 API 来存储和获取消息. 消息队列分两种:点对点(p2p).发布订阅(pub/sub) ...

  5. VUE的Seo优化 如何实现

    今天看到这样一个问题,在vue中,如何进行seo优化呢? 大家应该都知道,seo优化主要是做搜索引擎的排名,但是ajax异步又不支持seo,同时对于url #/的写法,搜索引擎也没办法爬取网站内其他路 ...

  6. python模块导入总结

    python模块导入总结 模块导入方式 定义test.py模块 def print_func(): print("hello") import 语句 导入模块语法 import m ...

  7. CentOS7 yum安装配置 +redis主从配置

    一.安装必要包 yum install gcc 二.linux下安装 #下载 wget http://download.redis.io/releases/redis-3.0.0.tar.gz tar ...

  8. java 判断5张牌的组成

    题目: 一副牌中发五张扑克牌给你,判断是四条,三带二.三带一加一.两对.一对.顺子.还是什么都不是. 控制台输入: 1,1,1,1,2 示例输出: 四条 Java方法的代码: static Strin ...

  9. jumpserver模块功能介绍

    一.仪表盘二.用户管理1.用户列表2.用户组 三.资产管理 1.资产列表 1.1 管理资产树 资产树节点不能重名, 右击节点可以添加.删除和重命名节点, 以及进行资产相关的操作 1.2 为资产树节点创 ...

  10. 学习-Pytest(五)yield操作

    1.fixture的teardown操作并不是独立的函数,用yield关键字呼唤teardown操作 2.scope="module" 1.fixture参数scope=”modu ...