> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pika

export const VersionRequirements = ({versions = []}) => {
  if (!Array.isArray(versions) || versions.length === 0) {
    return null;
  }
  const boundaries = {
    upper: " or lower",
    exact: "",
    lower: " or higher"
  };
  const containerStyle = {
    marginTop: "0.5rem",
    marginBottom: "1.5rem"
  };
  const lineStyle = {
    display: "block",
    margin: "0 0 0.35rem 0",
    fontSize: "0.875rem",
    lineHeight: "1.4"
  };
  const pillBaseStyle = {
    display: "inline-block",
    padding: "0.1em 0.4em",
    borderRadius: "0.25rem",
    border: "1px solid",
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
    fontSize: "0.85em",
    fontWeight: 500
  };
  const pillColors = {
    "AppSignal for Elixir": {
      background: "#f3e8ff",
      borderColor: "#e9d5ff",
      color: "#9333ea"
    },
    "AppSignal for Front-end": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Go": {
      background: "#ccfbf1",
      borderColor: "#99f6e4",
      color: "#0d9488"
    },
    "AppSignal for JavaScript": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Node.js": {
      background: "#dcfce7",
      borderColor: "#bbf7d0",
      color: "#16a34a"
    },
    "AppSignal for Python": {
      background: "#dbeafe",
      borderColor: "#bfdbfe",
      color: "#2563eb"
    },
    "AppSignal for Ruby": {
      background: "#fee2e2",
      borderColor: "#fecaca",
      color: "#dc2626"
    },
    "AppSignal for Rust": {
      background: "#ffedd5",
      borderColor: "#fed7aa",
      color: "#ea580c"
    }
  };
  const defaultPillColor = {
    background: "#f4f4f5",
    borderColor: "#e4e4e7",
    color: "#52525b"
  };
  const getPillStyle = name => ({
    ...pillBaseStyle,
    ...pillColors[name] || defaultPillColor
  });
  const getBoundText = bound => {
    return boundaries[bound] || boundaries.lower;
  };
  return <div style={containerStyle}>
      {versions.map((v, i) => <p key={`${v.name}-${v.version}-${v.bound || "lower"}-${i}`} style={lineStyle}>
          This feature requires{" "}
          <code style={getPillStyle(v.name)}>{v.name}</code> version {v.version}
          {getBoundText(v.bound)}.
        </p>)}
    </div>;
};

<VersionRequirements
  versions={[
{ name: "Appsignal for Python", version: "1.3.7" },
{ name: "Pika", version: "0.12.0" }
]}
/>

Pika est une implémentation Python du protocole AMQP 0-9-1. L'intégration AppSignal pour Python pour [Pika](https://pika.readthedocs.io/en/stable/) instrumente l'envoi et la réception de messages dans votre application.

## Installation

<Note>
  🐍 N'oubliez pas d'[installer le paquet AppSignal for Python](/python/installation) dans votre application au préalable.
</Note>

Tout d'abord, installez le package `opentelemetry-instrumentation-pika`.

<CodeGroup>
  ```python Python theme={null}
  # requirements.txt
  opentelemetry-instrumentation-pika
  ```
</CodeGroup>

Si vous exécutez vos consommateurs en tant que processus séparés, assurez-vous également d'importer `appsignal` et d'appeler `appsignal.start()` avant de démarrer les processus consommateurs Pika, afin qu'AppSignal puisse instrumenter le traitement des messages par les consommateurs.

## Fonctionnalités

Lors de l'utilisation de l'intégration Pika, AppSignal créera un échantillon de performance pour chaque message envoyé ou reçu par un consommateur.

Lorsqu'un message est envoyé ou reçu dans un contexte instrumenté, comme une requête web ou un job en arrière-plan, AppSignal affichera un événement dans la chronologie des événements de l'échantillon de performance représentant l'envoi ou la réception du message.
