目录

  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. get、set快捷键那码事儿

    今天发现一个省时间的方法.get一下,哈哈 在快捷get/set.或其他那个页面上的方法时,只需Shift+Alt+s 然后,选择哪个方法,就按该方法字母下有横线的那个字母(只按单个字母就行) 在ge ...

  2. Axios 的基本使用

    Axios 是一个基于 promise 的HTTP 库, 可以用在浏览器和 node.js 中. 1. 从浏览器创建 XMLHttpRequests 2. 从node.js 创建 http 请求 3. ...

  3. P1115 最大子段和(简单DP)

    题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入格式 第一行是一个正整数NN,表示了序列的长度. 第二行包含NN个绝对值不大于1000010000的整数A_iAi​,描述了这段序 ...

  4. c语言中宏定义#和 ##的作用:

    转载:http://www.cnblogs.com/cyttina/archive/2013/05/11/3072969.html 看了这篇文章后了解了,但是文章中的例子比较特别,我在这里加个注释好了 ...

  5. array_chunk的用法和php操作大数据

    一.array_chunk() 函数 二.php操作大数据 1.在操作大数量数据与数据库交互时,比如插入大量数据,db就会报错,这时可以把原本的数据用array_chunk分隔成几个数组块,再循环插入 ...

  6. PostgreSQL-临时表空间与配置表

    虽然我给数据库创建了表空间,但是操作中仍遇到了些问题,需要创建临时表空间. 配置表 首先了解下 postgres 的配置表,手动修改各种配置. 打开即可看到各种配置,包括临时表空间. 临时表空间 1. ...

  7. Voting CodeForces - 749C (set,模拟)

    大意: n个人, 两个党派, 轮流投票, 两种操作(1)ban掉一个人 (2)投票, 每轮一个未被ban的人可以进行一次操作(1)或操作(2), 求最终哪个党派得票最多. 显然先ban人会更优, 所以 ...

  8. C# ref out parase 理解

    这节课我们来学习方法中的参数传递,在面向对象二中,我曾说过,参数也属于变量的一种,在c语言的学习时,同学们都学习过参数这个概念和用法,方法使用参数列表来传递变量的基本语法如下:returnType  ...

  9. python接口自动化 - Requests-3 高级用法

    高级用法 本篇文档涵盖了 Requests 的一些高级特性. 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 url ...

  10. Java日志打印方法

    一.使用log4j打印日志 1. 下载log4j.jar和commons-logging.jar.     log4j.jar下载地址:http://logging.apache.org/log4j/ ...